从单值字段中生成多个列

时间:2014-12-19 14:08:55

标签: sql-server

我有一个包含以下列的表格(表1)。

[Date], [Status], [Time], [Category], [Count]

我已经编写了一个SQL查询使用,下面是查询。

SELECT [Date]
    ,[Status]
    ,[Time]
    ,[1 time] as '1 time'
    ,[2 times] as '2 times'
    ,[3 times] as '3 times'
    ,[4 times] as '4 times'
    ,[5 times] as '5 times'
    ,[>5 times] as '>5 times'
FROM Table1
PIVOT (
    SUM([Count])
    FOR [Category] IN 
    ([1 time], [2 times], [3 times], [4 times], [5 times], [>5 times])
) as PVT
ORDER BY 1, 2, 3, 4

我按照以下列的要求获得了结果。

[Date], [Status], [Time], [1 time], [2 times], [3 times], [4 times], [5 times], [>5 times]

但我需要再添加一个列名Overall,这将列出所有这些列的总和。

[1 time], [2 times], [3 times], [4 times], [5 times], [>5 times]

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT [Date]
      ,[Status]
      ,[Time]
      ,[1 time]
      ,[2 times]
      ,[3 times]
      ,[4 times]
      ,[5 times]
      ,[>5 times]
      ,[1 time] + [2 times] + [3 times] + [4 times] + [5 times] + [>5 times] AS Overall
FROM (SELECT [Date]
            ,[Status]
            ,[Time]
            ,[1 time] as '1 time'
            ,[2 times] as '2 times'
            ,[3 times] as '3 times'
            ,[4 times] as '4 times'
            ,[5 times] as '5 times'
            ,[>5 times] as '>5 times'
     FROM Table1
     PIVOT (SUM([Count]) FOR [Category] IN ([1 time], [2 times], [3 times], [4 times], [5 times], [>5 times])) as PVT) AS T
ORDER BY 1, 2, 3, 4