2012-04-12 1 views
0

У меня есть 2 таблицы ... они в основном одинаковы, за исключением имени столбца в одном из них, потому что они имеют дело с двумя разными именами, хотя .. данные, которые я хочу находится в столбцах с одинаковым именем. Очень многое, что я хочу сделать ... это. Они также должны быть разными, поэтому я не считаю дубликаты ... Я могу получить их в виде отдельных таблиц ... но я не могу собрать их вместе. Мне нужно их в 1 столбце из-за того, как он отправляется на кодовую страницу C3 и как он ее читает ... структура уже была установлена ​​ранее ... и есть около 5 других операторов, которые выполняются в этой одной хранимой процедуре, подобной этой (также я не тот, кто это задал). Так что если это возможно .. дайте мне знать, пожалуйста. Я также вставлю точный код, который у меня есть, если вам хочется увидеть реальный код жизни. Я просто попытался упростить его, чтобы было легче понять. Я собираюсь опубликовать некоторые изображения, чтобы, надеюсь, объяснить это немного лучше.Проверка 2 столбцов sql и отображение результата в 1 столбце pt2

Image 1 является то, что в настоящее время создана:

http://imgur.com/h0rNU

верхняя часть того, что хранится в таблицах .. Дно больше результата он в основном работает этот код, чтобы получить нижнюю

DECLARE @id INT; 
DECLARE @invest nvarchar(50); 
SET @id = '7633'; 
SET @invest = ''; 

SELECT 'a' + CONVERT(nvarchar, orderfindings.risk_rating) AS cat, COUNT(DISTINCT orderfindings.prnt_id) AS stat 
    FROM orderheader, orderaudits, orderfindings 
    WHERE orderheader.id = orderaudits.orderheader_id AND orderaudits.ID = orderfindings.prnt_id 
    AND orderheader.id = @id AND orderfindings.risk_rating > 0 AND orderaudits.Investor_Name LIKE '%' + @invest + '%' 
    GROUP BY orderfindings.risk_rating 

Если я хочу, чтобы агентства вместо находок ... просто замените его .. агентства и находки - это 2 таблицы .. они очень похожи друг на друга, но я хочу, чтобы результат был вместе. попробовал несколько способов. но я не могу показаться, чтобы получить его изображение 2- таблица на дне более, что я ищу .. он комбинирует их обоих в 1:

http://imgur.com/a4qXW

Если заказ имеет вывод или агентство, или оба в нем .. тогда он становится помеченным как 1 для этого рейтинга риска ... если он не ... тогда 0 для этого рейтинга риска .. а затем суммировать их все, чтобы увидеть, что я получил .. любая помощь приветствуется. Я уточню, что могу, если вы не понимаете;

Edit:
Я работал с ним .. .did этот http://pastebin.com/117Z2TVh .. получил его, чтобы отобразить 2 колонки .. но до сих пор не правильный результат ... Я получаю a1 = 1 ... a2 = 1 ... так что он не проходит через все заказы ... или ему нужен способ подсчитать его ... Я положил сумму в начале case case .. erro из-за подсчетов ... поэтому я взял счет вне ... на самом деле не работает .. какой-нибудь совет?

ответ

0

; с нахождением AS (выберите oa.id, oa.Risk_Rating, COUNT (orf.Prnt_ID) findingcount ОТ orderaudits габаритная LEFT JOIN orderfindings ORF на oa.ID = orf.Prnt_ID --where oa.risk_rating > 0 и oa.Investor_Name как «%» + @invest + '%' GROUP BY oa.id, oa.Risk_Rating), Агентство AS (выберите oa.id, oa.Risk_Rating, COUNT (ora.Prnt_ID) agencycount FROM orderaudits oa ВЗАИМОДЕЙСТВИЕ ВЗАИМОДЕЙСТВУЮЩИХ ОФОРМЛЕНИЙ ora oa.ID = ora.Prnt_ID --WHERE oa.risk_rating> 0 и oa.Investor_Name типа '%' + @invest + '%' GROUP BY oa.id, oa.Risk_Rating) /* SELECT 'Только поиск', oa.Risk_Rating, COUNT (oa.id) as а, СУММА (случай, когда f.findingcount> 0, то 1 еще 0 концов), как б ОТ orderaudits о.а. LEFT JOIN найти п пО oa.id = f.id LEFT JOIN orderheader ой ON oh.id = оа. orderheader_id ГДЕ oh.id = @id и oa.risk_rating> 0 и oa.Investor_Name как '%' + @invest +% ' GROUP BY oa.Risk_Rating

UNION ALL

SELECT 'Agency Only', oa.Risk_Rating, COUNT (oa.id) как a, SUM (CASE WHEN a.agencycount> 0 then 1 ELSE 0 END) как b FROM orderaudits oa LEFT JOIN Agency a ON oa. id = a.id LEFT JOIN orderheader oh ON oh.id = oa.orderheader_id WHERE oh.id = @id и oa.risk_rating> 0 и oa.Investor_Name как '%' + @invest + '%' GROUP пО oa.Risk_Rating

UNION ALL */ --Together SELECT 'аа' + преобразовать (NVARCHAR, oa.risk_rating), как кошки, SUM (случай, когда f.findingcount> 0 ИЛИ a.agencycount> 0, то 1 ELSE 0 END) как b FROM orderaudits оа LEFT JOIN найти п ON oa.id = f.id LEFT JOIN Агентству ON oa.id = A.id LEFT JOIN orderheader о ON oh.id = oa.orderheader_id WHERE oh.id = @ id и oa.risk_rating> 0 и oa.Risk_rating> 0 и oa.Investor_Name, как «%» + @invest + '%' GROUP BY oa.Risk_Rating

1

Вы пытались использовать предложение UNION?

Если вы не знакомы: http://msdn.microsoft.com/en-us/library/ms180026.aspx

В основном вы пишете два запроса, возвращающимся один из двух колонн в вопросе по обе стороны от Союза, и они возвращаются в виде одного столбца в конечном наборе результатов. Если имена столбцов не совпадают с их именами с обеих сторон, чтобы их можно было комбинировать в конечном объединенном результирующем наборе.

+0

Я действительно попробовал соединение .. в sql-заявлении я положил .. скопировал его .. изменил его на агентства .. и застрял в союзе все между ними .. он не объединяет их, хотя .. это дает мне .. a1 = 5, a2 = 2, a2 ​​= 3 a2 = 3 ... что по-прежнему не так .. .cuz в действительности..a1 должно быть 5, а a2 4 ... я не хочу их добавлять ... или делаю их отдельно. Мне нужно утверждение, чтобы проверить и посмотреть, истинно ли это из них. Если да. .add 1. Также нет ничего .. и пройти все приказы ... это поможет? –

+0

Можете ли вы создать сценарий своей таблицы и данных, было бы намного быстрее, если бы у меня была ваша точная среда, чтобы написать запрос, чем пытаться представить это в моей голове :) –

+0

tbh..not really..there есть некоторая конфиденциальная информация в некоторых из стол, из которого он тянет ... вот почему я сорта сделал манекен ... не стол ... но ... info..sorry.i'm пытается думать о том, как это сделать .. я бы мог это сделать. .is расширить на манекен макет для вас и сделать таблицы, как они должны быть –