我有像
这样的场景Account_Number | Ins1 |Ins2 | Ins3
8923647324 | 3 | 1 | 5
128736244 | 5 | 2 | 6
9238475323 | 6 | 3 | 7
我想实现像
这样的东西8923647324 | 3
8923647324 | 1
8923647324 | 5
128736244 | 5
128736244 | 2
128736244 | 6
可以使用UNION
完成。但是要寻找一些不会影响数据检索性能的内置功能。而且,我没有任何线索。任何人都可以帮助我。
答案 0 :(得分:3)
有很多方法可以做到这一点:
使用UNION
SELECT Account_Number,
Ins1 AS Ins
FROM YourTable
UNION ALL
SELECT Account_Number,
Ins2
FROM YourTable
UNION ALL
SELECT Account_Number,
Ins3
FROM YourTable
使用CROSS APPLY
:
SELECT t.Accoun_Number,
x.Ins
FROM YourTable t
CROSS APPLY
(
VALUES
(t.Ins1),
(t.Ins2),
(t.Ins3)
) x (Ins);
我会使用UNPIVOT
添加一种方法,但我会留给您研究。
答案 1 :(得分:2)
您可以使用UNPIVOT
SELECT Account_Number, Ins
FROM tbl
UNPIVOT
(
Ins FOR Val IN (Ins1, Ins2, Ins3)
) as unp
答案 2 :(得分:0)
select Account_Number, Ins1 as Value from mytable
UNION ALL
select Account_Number, Ins2 as Value from mytable
UNION ALL
select Account_Number, Ins3 as Value from mytable