我有一个包含以下数据的表格
YYYMMDD Atest BTest CTest
20150525 100 200 300
20150526 110 210 310
20150527 120 220 320
我需要输出如下
xyz 20150525 201050526 20150527
Atest 100 110 120
BTest 200 210 220
CTest 300 310 320
我如何实现上述结果集。我的表Dev将会增长,我需要结果集表来动态构建列并根据需要显示数据。 任何帮助表示赞赏。如果你建议枢轴,我可能知道我应该使用哪个字段进行聚合以及如何使用它。感谢。
答案 0 :(得分:0)
首先,您需要再次移动您的桌子。这是关键的想法:
select * from TableName
unpivot(v for xyz in([Atest],[Btest],[Ctest]))u
pivot(max(v) for yyyymmdd in([20150525],[20150526],[20150527]))p
小提琴http://sqlfiddle.com/#!3/a675c/1
对于动态sql,您可以找到许多示例,说明如何使用STUFF
函数在一个字符串中连接不同的日期并构造动态查询。例如T-SQL dynamic pivot