2012-02-17 18 views
0

私は、次の形式で人物という名前のテーブルを持っています:ヘルプで必要なSQLグループ

Date | Nameです。私は、次の

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

を与える

Select Date, Name, count(*) 
From People 
Group By Date, Name; 

を名前でグループ化することによって、人を数えるしかし、私は次の結果をご希望の場合は

は:

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

が、このことは可能です?これは、より複雑なデータベースの簡単な例です。誰かがこの問題を解決するのに私を助けてくれたら、コンセプトを使ってテーブルに実装します

ありがとう!

+1

何SQL製品は、使用している(ヒント:ピボットの検索どのRDBMSを使用していても、答えを見つける必要があります)。 –

+0

こんにちは、どのRDBMSを使用していますか? MS-SQLを使用する場合は、 'PIVOT'ステートメントを使用してみてください。 –

+0

@ Damianのコメントに加えて、検索語 'pivot'と' crosstab'であなたのRDBMSプラットフォームを席捲し、これが可能かどうかを調べるべきです。 –

答えて

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 
関連する問題