2017-05-04 13 views
0

我有一个返回这个结果怎样包括在unpivot的查询id列

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 

它返回

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

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

回答

1

刚从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 

希望有所帮助。

+0

完美,我失去了ID行,但它仍然适合我的需求。谢谢。 –

+0

你可以通过复制你的id列两次,然后给出一个不同的名字(即TransactionIdentifier2)来克服这个问题。添加一个选择,一个选择不透明。 – luly