如何在 unpivot 查询中包含 id 列

How do I include the id column in a unpivot query

我有一个简单的查询 returns 这个结果

TransactionIdentifier  TransactionType   DateTimeStamp
1                      Destruction       Dec 23 2015  7:43AM
2                      Management        May 21 2013  2:01AM

我要转换成下面的格式

TransactionIdentifier  ColumnName             Value
1                      TransactionIdentifier  1
1                      TransactionType        Destruction                                       
1                      DateTimeStamp          Dec 23 2015  7:43AM
2                      TransactionIdentifier  2
2                      TransactionType        Management                                        
2                      DateTimeStamp          May 21 2013  2:01AM

这是我目前的查询

   SELECT V.ColumnName, V.Value
    FROM (SELECT CONVERT( VARCHAR(4000), TransactionIdentifier) AS TransactionIdentifier,
                 CONVERT( VARCHAR(4000), TransactionType) AS TransactionType,
                 CONVERT( VARCHAR(4000), DateTimeStamp) AS DateTimeStamp
          FROM Transactions
          WHERE TransactionIdentifier IN(1, 2)) AS A1 
         UNPIVOT(Value FOR ColumnName IN(TransactionIdentifier,TransactionType,DateTimeStamp)) AS V

它returns这个

ColumnName             Value
TransactionIdentifier  1
TransactionType        Destruction                                       
DateTimeStamp          Dec 23 2015  7:43AM
TransactionIdentifier  2
TransactionType        Management                                        
DateTimeStamp          May 21 2013  2:01AM

如何将 TransactionIdentifier 字段添加到结果中?

只需从 unpivot 中删除 TransactionIdentifier 并将其添加到 Select 语句

SELECT TransactionIdentifier ,V.ColumnName, V.Value
    FROM (SELECT CONVERT( VARCHAR(4000), TransactionIdentifier) AS TransactionIdentifier,
                 CONVERT( VARCHAR(4000), TransactionType) AS TransactionType,
                 CONVERT( VARCHAR(4000), DateTimeStamp) AS DateTimeStamp
      FROM Transactions
      WHERE TransactionIdentifier IN(1, 2)) AS A1 

     UNPIVOT(Value FOR ColumnName IN(TransactionType,DateTimeStamp)) AS V

输出:

TransactionIdentifier   ColumnName          Value
1                       TransactionType     Destruction
1                       DateTimeStamp       Dec 23 2015  7:43AM
2                       TransactionType     Management
2                       DateTimeStamp       May 21 2013  2:01AM

希望对您有所帮助。