2012-02-17 62 views
0

我有一個名爲People的表格,格式如下:SQL Group按需幫助

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 

這是可能的?這是一個更復雜的數據庫的簡單例子。如果有人幫助我解決這個問題,我將使用這個概念來實現它在我的表

謝謝!

+1

什麼SQL產品是您使用(提示:尋找支點以及你正在使用的RDBMS,你應該找到答案)? – 2012-02-17 10:51:13

+0

嗨,你使用哪種RDBMS?如果您使用MS-SQL,請嘗試使用'PIVOT'-聲明。 – 2012-02-17 10:51:44

+0

繼續@ Damian的評論 - 我會用搜索術語'pivot'和'crosstab'來爲你的RDBMS平臺進行搜索,並且你應該知道這是否可能...... – 2012-02-17 10:52:28

回答

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

從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