2016-06-16 176 views
0

我無法將結果分組到子查詢中。目前,我得到的結果只是給出了每個crq_requested_by_company旁邊的所有standard_crqs的總數,而不是通過crq_requested_by_company對其進行分組。sql server - group by子查詢

我有以下代碼

SELECT crq_requested_by_company 
     ,COUNT(crq_number) as 'count crqs' 
     ,(SELECT count(crq_number) FROM change_information where crq_change_timing = 'Standard') as 'standard crqs' 
FROM change_information 
GROUP BY crq_requested_by_company 

我的結果是這樣的。該standard_crqs都應該小於整體計數每個crq_requested_by_company

crq_requested_by_company count standard_crqs standard_crqs(correct) 
A        4   2824    3 
B        2   2824    1 
C        2269  2824    1745 
D        7696  2824    3456 
E        110  2824    56 
F        91   2824    17 
G        33   2824    23 
H        295  2824    78 

如果我只是查詢

SELECT count(crq_number) 
FROM change_information 
WHERE crq_change_timing = 'Standard' 
GROUP BY crq_requested_by_company 

這工作完全正常

回答

2
SELECT crq_requested_by_company 
    ,COUNT(crq_number) as 'count crqs' 
    ,(SELECT count(crq_number) 
     fROM change_information ci2 
     where crq_change_timing = 'Standard' 
     and ci2.crq_requested_by_company = ci1.crq_requested_by_company)  
as 'standard crqs' 
FROM change_information c1 
GROUP BY crq_requested_by_company 
+0

偉大工程謝謝 –

0

您可以使用案例相反的子查詢 -

SELECT crq_requested_by_company 
     ,COUNT(crq_number) as 'count crqs' 
     ,COUNT(CASE WHEN crq_change_timing = 'Standard' THEN 1 END)as 'standard crqs' 
FROM change_information 
GROUP BY crq_requested_by_company 

因爲您從同一張桌子獲取信息,所以它是最佳解決方案。

5

你的SQL查詢需要一個「案例」被放在過濾「crq_change_timing」反對「標準」

見我做了修正,

SELECT crq_requested_by_company 
    ,COUNT(crq_number) as 'count crqs'  
    ,(SELECT count(crq_number) FROM change_information 
      where crq_change_timing = 'Standard') as 'standard crqs' 
    ,COUNT(CASE WHEN crq_change_timing = 'Standard' THEN 1 END)as 'standard crqs (Correct)' 
FROM change_information 
GROUP BY crq_requested_by_company