下面是我的表结构。我想取消以下数据。
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
答案 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