SQL Group By Help Required

时间:2012-02-17 10:44:38

标签: sql group-by

我有一个名为People的表格,格式如下:

Date | Name

当我通过名称分组

计算人数时
Select Date, Name, count(*)
From People
Group By Date, Name;

将提供以下内容

Date        Name        count(*)
10          Peter       25
10          John        30
10          Mark        25
11          Peter       15
11          John        10
11          Mark        5

但我希望得到以下结果:

Date    Peter   John    Mark
10      25      30      25
11      15      10      5

这可能吗?这是一个更复杂的数据库的简单示例。如果有人帮助我解决这个问题,我将使用这个概念在我的表中实现它

谢谢!

2 个答案:

答案 0 :(得分:3)

Select Date
     , count(case when Name = 'Peter' then 1 else null end)
     , count(case when Name = 'John' then 1 else null end)
     , count(case when Name = 'Mark' then 1 else null end)
From People
Group By Date;

答案 1 :(得分:1)

另一个与turbanoff不同的选项,如果出于某种原因,你发现自己处于一种无法通过以下方式应用群组的情况:

Select distinct(P.Date), 
       (select count(*) from People where date=p.date and name='Peter') as Peter,
       (select count(*) from People where date=p.date and name='John') as John,
       (select count(*) from People where date=p.date and name='Mark') as Mark
From People P