如何取消多列的透视

时间:2018-07-11 10:58:55

标签: sql sql-server sql-server-2008 sql-server-2012

下面是我的表结构。我想取消以下数据。

amount  user    amount1 user1   amount2 user2   amount3 user3   amount4 user4
10      1       20      2       30      3       40      4       50      5

现在我想要的结果如下。

amount user
10     1
20     2
30     3
40     4
50     5

2 个答案:

答案 0 :(得分:0)

您要取消数据透视。我推荐apply

select v.*
from t cross apply
     (values (t.amount, t.user),
             (t.amount1, t.user1),
             (t.amount2, t.user2),
             (t.amount3, t.user3),
             (t.amount4, t.user4)
     ) v(amount, user);

答案 1 :(得分:0)

您可以尝试以下操作,这将在您的特定情况下起作用:

SELECT 'user' + CAST(ROW_NUMBER() OVER(partition BY 1 ORDER BY amountx) AS VARCHAR) AS [user],amountx
FROM [table]
UNPIVOT(
amountx 
FOR amntx IN (amount,amount1,amount2,amount3,amount4)

) AS UP

http://rextester.com/EWXV86982