可能重复:
T-SQL Pivot? Possibility of creating table columns from row values
我一直在徒劳地搜索太久了,不得不承认失败并寻求帮助,我正在尝试修改一个数据透视查询,以便从包含以下数据的表中生成动态查询结果:
UserId PageViewed DateTimeStamp
1 Index.html 2011-12-01 13:55:01
1 FAQ.html 2011-12-01 13:58:53
1 ContactUs.html 2011-12-01 14:00:16
2 Index.html 2011-12-01 15:55:01
2 FAQ.html 2011-12-01 15:58:53
2 ContactUs.html 2011-12-01 15:00:16
要显示类似的内容,页码列取决于用户访问的页数:
User StartTime Page1 Page2 Page3
1 13:55:01 Index.hml FAQ.html ContactUs.html
2 15:55:01 Index.hml FAQ.html ContactUs.html
我通过对列进行硬编码来管理它,但显然我不想继续更改脚本以容纳越来越多的页面。
到目前为止,我有以下几点:
SELECT p.UserId,
CONVERT(TIME, MIN(p.DateTimeStamp), 7) StartTime,
ISNULL(p.[1],'') Page1
ISNULL(p.[1],'') Page2
ISNULL(p.[1],'') Page3
FROM
(SELECT UserId
,DateTimeStamp
,PageViewed
,ROW_NUMBER() OVER(PARTITION BY UserId ORDER BY DateTimeStamp) as pOrder
FROM tbl) AS p
PIVOT(MIN(PageViewed) FOR pOrder IN ([1],[2],[3]))
非常感谢任何正确方向的帮助或指示!
提前致谢!
答案 0 :(得分:1)
我见过的关于动态旋转的最好例子是Itzik Ben-Gan的例子。这个相关的SO Question有一个很好的例子,说明你需要做什么。基本上,你需要使用一些动态的sql来实现你的目标。