我有兩個表格,我想加入創建一個最終表格。結合SQL服務器中不同行數的兩個表格
查詢1
select DisplayName, Category, NoOfLevels
, count(Underoverestimate) as OverCount
, Avg(CaseDuration - EstDuration) as ODA
from DSU
where yearid between '2016' and '2018'
and underoverestimate = 'Over'
group by DisplayName, Category, nooflevels
查詢2
select DisplayName, Category, NoOfLevels
, count(Underoverestimate) as UnderCount
, Avg(CaseDuration - EstDuration) as ODA
from DSU
where yearid between '2016' and '2018'
and underoverestimate = 'Under'
group by DisplayName, Category, nooflevels
查詢1結果
DisplayName|Category |NoOfLevels|OverCount|ODA
Bran, J. |Fusion |Single |2 |102.5
Bran, J. |Decompression| |1 |13
Caron, M. |Fusion |Multi |9 |88.444
查詢2個結果
DisplayName|Category |NoOfLevels|UnderCount|ODA
Curry, S. |Fusion |Multi |2 |105
Bran, J. |Fusion |Single |1 |115.5
Bran, J. |Decompression| |4 |131
Caron, M. |Decompression| |5 |66
我想要的最終結果是保留所有獨特的DisplayName,Catergory和NoOfLevels,但添加查詢1中的'OverCount'和ODA以及查詢2中的'UnderCount'和'ODA'。
通緝結果結果
DisplayName|Category |NoOfLevels|OverCount|ODA |UnderCount|ODA
Bran, J. |Fusion |Single |2 |102.5 |1 |115.5
Bran, J. |Decompression| |1 |13 |4 |131
Caron, M. |Decompression| | | |5 |66
Caron, M. |Fusion |Multi |9 |88.444 | |
Curry, S. |Fusion |Multi | | |5 |66
我試圖做這個做臨時表與查詢1和2,然後做一個新的選擇語句來報告我想要的數據。
Select #QueryOne.DisplayName, #QueryOne.Category,
#QueryOne.NoOfLevels, count(#QueryTwo.UnderCount) as UnderCount
from #QueryOne
join #QueryTwo
on #QueryOne.DisplayName = #QueryTwo.DisplayName
group by #QueryOne.DisplayName, #QueryOne.Category,
#QueryOne.NoOfLevels
order by #QueryOne.DisplayName, #QueryOne.Category,
#QueryOne.NoOfLevels
我的結果是錯誤的。 (我還在測試查詢,所以我不包括所有我想要尚列,但在測試中我發現結果是錯誤的)
DisplayName|Category |NoOfLevels|UnderCount|
Bran, J. |Fusion |Single |6 |
Caron, M. |Fusion |Multi |9 |
Bran, J. |Decompression| |6 |
Curry, S. |Fusion |Multi |12 |
Caron, M. |Decompression| |9 |
第3列看起來是正確的,但「漏報」值不正確。這個查詢中的'COUNT'函數給了我Bran行的總數。使用'SUM'也會導致錯誤的信息。最後,如果我刪除「COUNT(」然後我需要把#QueryTwo.UnderCount組中的,給了我下面的結果:
DisplayName|Category |NoOfLevels|UnderCount|
Bran, J. |Fusion |Single |1 |
Bran, J. |Fusion |Single |2 |
Bran, J. |Decompression| |1 |
Bran, J. |Decompression| |2 |
Caron, M. |Decompression| |3 |
Caron, M. |Decompression| |2 |
Caron, M. |Fusion |Multi |3 |
Caron, M. |Fusion |Multi |1 |
我試圖通過計算器,但避風港」尋找這個答案我發現有很多問題需要加入兩張牌,但他們的問題並不相同......我認爲聯盟,但是如果下一步是正確的話,我似乎無法控制我的頭腦。問題的一部分是,查詢1具有不在查詢2中的DisplayNames,反之亦然。難以加入?
如果我需要澄清更多,請讓我知道,我的大腦是糊塗的。
我喜歡第二個解決方案的更多:) – BICube
第一個查詢提供了我想要的,但是,它變得難以選擇特定的列,因爲有在T1和其他一些DisplayNames所有必要的信息在t2中,所以使用t1.displaynames不會出現所有組合。但是,您呈現的第二個查詢完美無缺!我會將這個思考過程添加到我以前的工作中!謝謝! – MartyB