聚合在同一行

时间:2015-02-03 20:54:26

标签: sql sql-server tsql

我需要一些帮助来执行聚合。 我有以下声明:

SELECT name,
CASE WHEN year=2013 THEN count(ID) END AS 'Count2013',
CASE WHEN year=2012 THEN count(ID) END AS 'Count2012'
FROM Table GROUP BY year, name

并得到如下结果:

Name    Count2013        Count2012
ABC     NULL             14731
ABC     456              NULL
DEF     NULL             5666
DEF     14439            NULL

如何获得以下结果?

Name    Count2013    Count2012
ABC     456          14731
DEF     14439        5666

请注意,我尝试在没有NULL的情况下在同一行显示结果。

1 个答案:

答案 0 :(得分:2)

您只需要使用案例表达。

SELECT name
    , sum(CASE WHEN year = 2013 THEN 1 ELSE 0 END) AS 'Count2013'
    , sum(CASE WHEN year = 2012 THEN 1 ELSE 0 END) AS 'Count2012'
FROM Table GROUP BY name