如果我有一个表格如下。
TagName Value Datetime
--------------------------
T1 v1 D1
T2 v2 D1
T3 v3 D1
T1 v4 D2
T2 v5 D2
T3 v6 D2
并且我想创建一个返回以下内容的选择查询
T1 T2 T3 Datetime
----------------------------
v1 v2 v3 d1
V4 v5 v6 d2
T1/T2/T3是动态的,即可以有任意数量的标签。我有一个数据库,可以记录特定时间戳处不同标签的值。我希望所有标签的值都在一行中的一个时间戳处。有人知道怎么做吗?
示例
Declare @SQL varchar(max) = Stuff((Select Distinct ',' + QuoteName(TagName) From Yourtable Order by 1 For XML Path('')),1,1,'')
Select @SQL = '
Select ' + @SQL + ',[DateTime]
From YourTable
Pivot (max([Value]) For [TagName] in (' + @SQL + ') ) p'
Exec(@SQL);
返回
T1 T2 T3 DateTime
v1 v2 v3 D1
v4 v5 v6 D2