2017-05-04 15 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