【发布时间】:2015-12-02 05:28:48
【问题描述】:
我有如下所示的表格。我需要获取与每个不同元素的最大日期时间戳相对应的值,并使用 SQL Server 2005 或更高版本将行转换为列。列名值(即 A1、A2、A3 列是动态的,可以根据可用数据进行更改)
基表(来自结果查询)
Id Name Value DateTimeStamp
--------------------------------------
1 A1 5 Nov 14 2011 03:12:12:947PM
1 A1 6 Nov 15 2011 03:12:12:947PM
1 A2 7 Nov 14 2011 03:12:12:947PM
1 A2 8 Nov 15 2011 03:12:12:947PM
1 A3 9 Nov 14 2011 03:12:12:947PM
2 A3 10 Nov 15 2011 03:12:12:947PM
2 A1 1 Nov 14 2011 03:12:12:947PM
2 A1 2 Nov 15 2011 03:12:12:947PM
2 A2 3 Nov 14 2011 03:12:12:947PM
2 A2 4 Nov 15 2011 03:12:12:947PM
2 A3 5 Nov 14 2011 03:12:12:947PM
2 A3 6 Nov 15 2011 03:12:12:947PM
期望的输出:
Id A1 A2 A3
---------------
1 6 8 10
2 2 4 6
【问题讨论】:
-
名称列的值数量是否有限?另外,DateTimeStamp 列的数据类型是什么?
-
抱歉,列名也是动态的。
-
[T-SQL 动态数据透视] 的可能重复项。 (stackoverflow.com/questions/12210692/t-sql-dynamic-pivot) 请注意,您需要将数据透视结果加入到表中以获取对应于最大日期时间的值。
-
不想使用动态查询。使用静态查询的任何可用解决方案。
-
您有许多事先不知道的值。您希望静态查询如何工作?
标签: sql sql-server pivot