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 回答