【问题标题】:SQL - joining two queries against same table for grid outputSQL - 针对同一表加入两个查询以进行网格输出
【发布时间】:2017-05-22 16:48:03
【问题描述】:

我应该能够从我在这里阅读的其他问题/答案中弄清楚这一点,但我今天什么也做不了。非常感谢任何帮助。

我有两个查询,分别计算来自单个表的“GOOD”反馈和“BAD”反馈的实例。我只是想加入他们,这样我就可以看到下面的内容

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、聚合等。

【问题讨论】:

    标签: sql self-join


    【解决方案1】:

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

    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
    

    【讨论】:

      【解决方案2】:

      您应该能够使用条件聚合获得结果。这种类型的查询使用 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
      

      【讨论】:

      • 这也很棒 - 真的很感激!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      • 2010-10-08
      相关资源
      最近更新 更多