如何在 sql 中动态将行转换为列

  • 本文关键字:转换 动态 sql sql-server
  • 更新时间 :
  • 英文 :


如果我有一个表格如下。

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

相关内容

  • 没有找到相关文章

最新更新