2016-06-16 175 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