SQL Query返回现有表

时间:2017-08-16 20:34:57

标签: sql

我不确定如何对问题进行说明......但实质上,我有一个表中存储的数据类似于以下内容:

enter image description here

TYPE#= 219是人

TYPE#= 224是行动

理想情况下,我想运行一个查询,该查询将返回上表中的以下结果基本上,该人的姓名以及多种类型的计数:

enter image description here

我没有直接要求解决方案(我知道这个网站不是这样) - 我只是不知道去哪里或寻找与此类问题相关的信息。我是编写SQL的新手,在花了很多时间研究这个问题后,我非常感谢能够朝着正确的方向努力。

1 个答案:

答案 0 :(得分:1)

一种方法是使用自连接的条件聚合。另一种方式是枢轴。

select
    a.Name
    ,sum(case when b.NAME = 'A' then 1 else 0 end) as A
    ,sum(case when b.NAME = 'B' then 1 else 0 end) as B
    ,sum(case when b.NAME = 'C' then 1 else 0 end) as C
from
    SomeTable a
    inner join
    SomeTable b on 
    a.[RECORD NUM] = b.[RECORD NUM]
    and a.NAME <> b.NAME
where type_num = 219
group by
   a.NAME

您也可以根据帖子将and a.NAME <> b.NAME替换为and b.[TYPE NUM] = 224甚至and a.[TYPE NUM]<> b.[TYPE NUM]