Sql 需要使用Pivot进行以下输出

Sql 需要使用Pivot进行以下输出,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我的列名是 TimeStart Scanner 我希望使用pivot操作获得以下输出。请帮助我实现以下目标 TimeStart Hour Scanner1 Scanner2 Scanner3 Scanner4 Total 00:00 1 8000 9425 7200 8400 33026 01:00 2 11000 10800

我的列名是

TimeStart        Scanner
我希望使用pivot操作获得以下输出。请帮助我实现以下目标

 TimeStart  Hour    Scanner1    Scanner2    Scanner3    Scanner4    Total
 00:00       1         8000        9425       7200        8400      33026
 01:00       2         11000      10800       7700        8100      37602
 02:00       3         6850       11450       7940        7900      34143
 03:00       4         7200         600       9425        7700      24929
 04:00       5         7900           0      10800        8650      27355
 05:00       6         8120           0      11450        8800      28376
 06:00       7         8450           0      10800        9275      28532
 07:00       8         7850           0      10700        9285      27843
 08:00       9         9690           0       9500        8400      27599
 09:00      10         10400          0       8100        8150      26660
 10:00      11         9420           0       7740        7740      24911
 11:00      12         9850           0       7650        7650      25162
 12:00      13         7475         1500      6500        6500      21988
 13:00      14         8400         4800      9750        9750      32714
 14:00      15         8200         9850      7740        8800      34605
 15:00      16         9425         9500      7650        8750      35341
 16:00      17         10800        8100      6500        9425      34842
 17:00      18         11450        7740      9750       10800      39758
 18:00      19         10800        6984      8700       11450      37953
 19:00      20         10700        7420      7740       10800      36680
 20:00      21         9500         6000      7650       10700      33871
 21:00      22         8100         4800      6500        9500      28922
 22:00      23         7740         4200      9750        8100      29813
 23:00      24         7650          600      11450       7740      27464

您还可以使用带有
大小写表达式和
行数()的条件聚合来完成此操作。


TimeStart
Scanner
中存储的数据类型是什么?你能给你的问题添加一些例子吗?TimeStart有时间数据,Scanner有int数据
SELECT t.timeStart,
       MAX(CASE WHEN t.rnk = 1 THEN t.scanner END) as scanner1,
       MAX(CASE WHEN t.rnk = 2 THEN t.scanner END) as scanner2,
       MAX(CASE WHEN t.rnk = 3 THEN t.scanner END) as scanner3,
       MAX(CASE WHEN t.rnk = 4 THEN t.scanner END) as scanner4,
       SUM(t.scanner as total_scanner
FROM(
    SELECT s.*,
           ROW_NUMBER() OVER(PARTITION BY s.TimeStart ORDER BY s.scanner) as rnk
    FROM YourTable s) t