SQL - 为网格输出加入两个针对同一个表的查询

时间:2017-05-22 16:48:03

标签: sql self-join

我应该能够从我在这里阅读的其他问题/答案中找到答案,但我今天无法获得任何工作。任何帮助都非常感谢。

我有两个查询,计算“好”反馈的实例,以及来自单个表的“坏”反馈。我只想加入他们,以便我可以看到类似下面的内容

ID   |  GOOD |  BAD
121  |   0   |  7
123  |   5   |  0
287  |  32   |  8

我正在运行来自VBA的大量查询,如果这很重要,那么0可以为空。我可以在VBA中清理那些东西。

查询1:

select ID, count(*) 
from HLFULL 
where DEPT= 'HLAK' 
  and feedback = 'GOOD' 
group by ID

查询2:

select ID, count(*) 
from HLFULL 
where DEPT= 'HLAK' 
  and feedback = 'BAD' 
group by ID

我尝试过UNION,UNION ALL,JOIN,INNER JOIN,OUTER JOIN,聚合等等。

2 个答案:

答案 0 :(得分:2)

您可以像这样进行条件聚合:

select ID,
    count(case when feedback = 'GOOD' then 1 end) as Good,
    count(case when feedback = 'BAD' then 1 end) as Bad
from HLFULL
where DEPT = 'HLAK'
    and feedback in ('GOOD', 'BAD')
group by ID

答案 1 :(得分:0)

您应该能够使用条件聚合获得结果。此类查询使用CASE表达式和您的聚合函数来获取多个列:

select ID, 
  count(case when feedback = 'GOOD' then Id end) as Good,
  count(case when feedback = 'BAD' then Id end) as Bad
from HLFULL 
where DEPT= 'HLAK' 
group by ID