2012-04-12 70 views
0

我有2個表...他們基本上是相同的,除了列名之一,因爲他們處理2個不同的名稱,雖然..我想要的數據位於具有相同名稱的列中。幾乎我想做的事......是的,他們也需要有所區別,所以我不計算重複...我可以把它們作爲單獨的表......但我不能把它們放在一起..我需要他們在1列,因爲它是如何被髮送到C3代碼頁以及它如何讀取它...結構已經被預先設置...並且在這個存儲過程中有大約5個其他語句正在執行,像這樣(我也不是那個設置這個的人)。所以,如果這是可能的..請讓我知道..我也會貼上我的確切代碼,如果你想看到真實的生活代碼..我只是試圖簡化它,使其更容易理解。 我要發佈一些圖片,希望能夠更好地解釋它。檢查2個sql列,並顯示結果在1列pt2

圖片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該風險評級..然後總結他們所有看到我得到..任何幫助表示讚賞..如果你不明白,我會澄清我的所能。

編輯:
我一直在使用它.. .did這http://pastebin.com/117Z2TVh ..得到它顯示2列..但仍然沒有正確的結果......我越來越A1 = 1 ... a2 = 1 ...所以它沒有通過所有的命令......或者它需要一種方法來計算它...我在case case語句的開始處加上了一筆數字......因爲計數的錯誤......所以我把計數出...沒有真正的工作..任何建議?

回答

0

; WITH發現AS(選擇oa.id,oa.Risk_Rating,COUNT(orf.Prnt_ID)findingcount FROM orderaudits OA LEFT JOIN orderfindings ORF 上oa.ID = orf.Prnt_ID --where oa.risk_rating > 0和oa.Investor_Name like'%'+ @invest +'%' GROUP BY oa.id,oa.Risk_Rating), Agency AS(select oa.id,oa.Risk_Rating,COUNT(ora.Prnt_ID)agencycount FROM orderaudits oa LEFT JOIN orderagencies or o on oa.ID = ora.Prnt_ID --WHERE oa。risk_rating> 0和oa.Investor_Name like'%'+ @invest +'%' GROUP BY oa.id,oa.Risk_Rating) /* SELECT'Finding Only',oa.Risk_Rating,COUNT(oa.id)as一個,SUM(CASE WHEN f.findingcount> 0,則1 ELSE 0 END)爲b FROM orderaudits OA 左連接找到˚F ON oa.id = f.id LEFT JOIN orderheader ON oh.id = OA哦。 orderheader_id WHERE oh.id = @id和oa.risk_rating> 0且oa.Investor_Name LIKE '%' + @invest + '%' GROUP BY oa.Risk_Rating

UNION ALL

SELECT '機構只有',oa.Risk_Rating,COUNT(oa.id),其爲,SUM(CASE WHEN a.agencycount> 0,則1 ELSE 0 END)爲b FROM orderaudits OA LEFT JOIN局一個 OA上。 id = a.id LEFT JOIN orderheader oh ON oh.id = oa.orderheader_id WHERE oh.id = @id and oa.risk_rating> 0 and oa.Investor_Name like'%'+ @invest +'%' GROUP BY oa.Risk_Rating

UNION ALL */ --Together SELECT 'AA' +轉換(nvarchar的,oa.risk_rating)如貓,SUM(CASE WHEN f.findingcount> 0 OR a.agencycount> 0,則1 ELSE 0 END)as b FROM orderaudits OA LEFT JOIN發現˚F 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.Investor_Name like'%'+ @invest +'%' GROUP BY oa.Risk_Rating

1

您是否嘗試過使用UNION子句?

如果你不熟悉:http://msdn.microsoft.com/en-us/library/ms180026.aspx

基本上你寫兩個查詢的UNION兩側返回兩列的一個問題,他們正在返回的最終結果集的一列。如果列名不相同,則可以將它們合併到最終的聯合結果集中。

+0

我實際上已經嘗試過union..the sql語句,我放入..copied它..改變它的機構..並堅持一個工會所有介於..它不結合他們雖然..它給我.. a1 = 5,a2 = 2,a2 = 3 a2 = 3 ...這仍然是錯誤的.. .. .cuz在現實..a1應該是5,和a2 4 ...我不想要添加他們..或者他們單獨做..我需要語句來檢查,看看他們中的任何一個是否是真的..如果是。 .add 1..elso..nothing ..並通過所有的命令..有幫助嗎? – 2012-04-12 19:44:53

+0

你可以編寫出你的表格和數據,如果我有你的確切環境來編寫查詢,比試圖想象它在我的腦海裏會更快:) – 2012-04-12 19:50:10

+0

tbh ..不是真的..有一些敏感信息這張桌子是從哪裏拉出來的......這就是爲什麼我把一張虛擬桌子放在桌子上......不是桌子......但是......信息......我試圖想辦法去做到這一點..我可以做到。 .is擴展虛擬佈局爲你,使表應該是他們應該 – 2012-04-12 20:06:37