0

私は現在次のものを持っています:

SELECT status,count(status) AS count
  FROM [DB].[dbo].[contact]
  GROUP BY status

それは私に次のことを与えます:

Status 1   |   12
Status 2   |   23
Status 3   |   63

私はテーブルを次のように見せようとしています:

Status 1   Status 2   Status 3  
   12        23         63

最終的に、テーブルは次のようになります。

                 Status 1   Status 2   Status 3  
Date Range 1        12        23         63
Date Range 2        23        2           3       

今何をしたらいいのかわからない。これを行うには、どのような種類のSQLコマンド/構文を学習する必要がありますか?SQLを見るのはこれが初めてなので、どんなポインタも素晴らしいでしょう。

4

1 に答える 1

1

次のようなクエリを使用すると、正しい形式でデータを取得できます。

SELECT 
  sum(case when status = 'Status 1' then 1 else 0 end) Status1,
  sum(case when status = 'Status 2' then 1 else 0 end) Status2,
  sum(case when status = 'Status 3' then 1 else 0 end) Status3
FROM [DB].[dbo].[contact]

SQL Server では、PIVOT関数を使用してデータを変換することもできます。

select [Status 1] as Status1, 
  [Status 2] as Status2, 
  [Status 3] as Status3
from 
(
  SELECT status, status as statusToCount
  FROM [DB].[dbo].[contact]
) src
pivot
(
  count(statusToCount)
  for status in ([Status 1], [Status 2], [Status 3])
) piv
于 2012-11-07T16:48:41.803 に答える