【发布时间】:2009-08-21 10:37:24
【问题描述】:
用这个查询拉我的头发。也许这里的一些专家可以看出我做错了什么?
我有一个时间表如下:
CREATE TABLE TimeSheetTime(
TimeSheetTimeID int IDENTITY(1,1) NOT NULL,
TimeSheetItemID int NOT NULL,
OffsetToEntryDate tinyint NOT NULL,
Hours float NOT NULL
)
其中填充了一些数据,如下所示:
INSERT TimeSheetTime (TimeSheetItemID, OffsetToEntryDate, Hours)
SELECT 1,1,7
UNION SELECT 1,3,1.5
UNION SELECT 1,0,1
UNION SELECT 2,1,0
UNION SELECT 2,4,0
UNION SELECT 2,3,0
UNION SELECT 3,2,0
UNION SELECT 3,4,1
UNION SELECT 3,5,2
UNION SELECT 3,1,2
UNION SELECT 3,2,4
UNION SELECT 4,3,5
UNION SELECT 4,5,16
UNION SELECT 4,2,1
UNION SELECT 5,3,0.5
UNION SELECT 5,4,1
UNION SELECT 5,3,1
UNION SELECT 5,4,4
UNION SELECT 6,5,4
UNION SELECT 6,1,0.5
UNION SELECT 6,2,3.2
UNION SELECT 7,3,0.2
UNION SELECT 7,5,1.5
UNION SELECT 7,1,0.1
UNION SELECT 8,3,0.4
UNION SELECT 8,5,0.5
UNION SELECT 8,1,0.3
UNION SELECT 8,3,1
UNION SELECT 9,5,2
UNION SELECT 9,3,0.5
现在我想返回一个数据集,其中包含 TimeSheetItemID 后跟 PIVOT SUM of Hours,排列在 OffsetToEntryDate 列中。
即:
TimeSheetItemID | 0 | 1 | 2 | 3 | 4 | 5 | 6
我尝试了以下
SELECT *
FROM TimeSheetTime
pivot
(
SUM(Hours)
FOR OffSetToEntryDate
IN (0,1,2,3,4,5,6)
) as TST
欢迎提出任何建议。
【问题讨论】:
标签: sql-server sql-server-2005 tsql pivot