【问题标题】:Converting a single row and it's headers to two columns [duplicate]将单行及其标题转换为两列[重复]
【发布时间】:2018-11-29 21:05:24
【问题描述】:

我有一个定义数据表,我正在使用 On UPDATE 触发器跟踪更改。目前,我通过一系列 IF UPDATE([COLUMNNAME]) 检查跟踪更改。但是,这有一个问题,如果将来添加/删除/重命名列,触发器将失败。

我的想法是旋转 DELETED 和 INSERTED 表,将它们从带有标题的单行转换为两列,一列包含行标题,另一列包含行数据。然后将它们连接到标题中并查找数据部分的不同之处。然后我可以记录 Header、OldData (Deleted) 和 NewData (Inserted) 值。但是,到目前为止,我还无法做到这一点。我搜索了许多 PIVOT 和 UNPIVOT 示例,但似乎都不是我想要的。

举个例子:

ID    Name    Value1    Value2    Value3    Value4
1    Apple    10        1/1/18    25        10.0

到:

Header    Data
ID        1
Name      Apple
Value1    10
Value2    1/1/18
Value3    25
Value4    10

任何帮助将不胜感激。

【问题讨论】:

    标签: sql-server tsql pivot unpivot


    【解决方案1】:

    有时您需要以不同的方式提出问题:如果您查看示例,您实际上希望将列转换为行。如果我在 SO 上搜索“sql 将列转换为行”,第一个结果是 this question,答案可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 2019-10-22
      • 2022-08-17
      • 1970-01-01
      • 2013-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多