我有一些严重的麻烦,在TSQL得到这个PIVOT表正常工作。一点点帮助请帮助
下面是一些示例代码重现源表...
Declare @MyAssigneeTable table (
VDayID int,
VDate datetime,
StartTime varchar(100),
EndTime varchar(100),
PositionID int,
RoomID int,
RoomDesc varchar(100),
Position varchar(100),
SortOrder int,
Assignee varchar(100)
)
INSERT INTO @MyAssigneeTable VALUES (2264, '2013-10-23', '7 AM','12 PM',13,150,'Room 1','Position 1',99,'')
INSERT INTO @MyAssigneeTable VALUES (2264, '2013-10-23', '7 AM','12 PM',14,150,'Room 1','Position 2',99,'Matt')
INSERT INTO @MyAssigneeTable VALUES (2264, '2013-10-23', '7 AM','12 PM',15,150,'Room 1','Position 3',99,'Kevin')
INSERT INTO @MyAssigneeTable VALUES (2265, '2013-10-24', '7 AM','12 PM',13,150,'Room 1','Position 1',99,'')
INSERT INTO @MyAssigneeTable VALUES (2265, '2013-10-24', '7 AM','12 PM',14,150,'Room 1','Position 2',99,'Amber')
INSERT INTO @MyAssigneeTable VALUES (2265, '2013-10-24', '7 AM','12 PM',15,150,'Room 1','Position 3',99,'Lawrence')
INSERT INTO @MyAssigneeTable VALUES (2266, '2013-10-25', '7 AM','12 PM',13,150,'Room 1','Position 1',99,'Chad')
INSERT INTO @MyAssigneeTable VALUES (2266, '2013-10-25', '7 AM','12 PM',14,150,'Room 1','Position 2',99,'Kevin')
INSERT INTO @MyAssigneeTable VALUES (2266, '2013-10-25', '7 AM','12 PM',16,150,'Room 1','Position 3',99,'')
Select * from @MyAssigneeTable
我觉得我想要做某种PIVOT的,但我不能得到所需的输出。在下面所需的表格脚本中,我需要从不同日期驱动列名,将位置列行作为不同的值,并将行和列相交的单元格作为受让人。但是这对我来说太复杂了。这甚至可以完成?这是一个DDL来重新创建所需的输出。
Declare @MyDesiredTable table (
Position varchar(200),
[2013-10-23] varchar(100),
[2013-10-24] varchar(100),
[2013-10-25] varchar(100)
)
INSERT INTO @MyDesiredTable VALUES('Room 1/Position 1','','','Chad')
INSERT INTO @MyDesiredTable VALUES('Room 1/Position 2','Matt','Amber','Kevin')
INSERT INTO @MyDesiredTable VALUES('Room 1/Position 3','Kevin','Lawrence','')
Select * from @MyDesiredTable
任何人都可以帮助我吗?
非常感谢您的协助!
你能展示你的尝试? – Siyual 2014-10-02 16:24:06
我曾尝试使用脚本喜欢做基本的数据透视表的例子(如http://sqlhints.com/2014/03/10/pivot-and-unpivot-in-sql-server/)“SELECT * FROM @MyAssigneeTable PIVOT (VDate IN的受让人(从@MyAssigneeTable中选择Distinct(VDate)))AS PVTTable“。但是我收到语法错误。我不知道这是否是正确的方法。大多数例子似乎都在PIVOT子句中使用“AVG”,“SUM”等。我不想要一个我不相信的聚合函数。所以一条生命线会是太棒了!谢谢 – Solo812 2014-10-02 16:32:04
数据透视表是一种防止汇总的工具。总结取决于使用聚合函数。 – Smandoli 2014-10-02 16:52:41