有没有办法做到以下几点?
假设表A中的选择有几列如下:
id | value1 | value2 | value3
=============================
1 | 1.0 | 2.0 | 3.0
2 | 1.5 | 1.6 | 1.7
我想获取结果并插入另一个表(表B),如下所示:
tableAId | key | value
=========================
1 | value1 | 1.0
1 | value2 | 2.0
1 | value3 | 3.0
2 | value1 | 1.5
2 | value2 | 1.6
2 | value3 | 1.7
有没有办法以一种插入选择方式执行此操作?
答案 0 :(得分:0)
您可以使用unpivot
执行此操作:
-- insert into TableB (tableAId, key, value)
select id, [key], value
from (
select id, [key], value
from TableA
unpivot (
[Value] for [Key] in ([Value1],[Value2],[Value3])
) as unpvt
) derived
这列的名称是硬编码的,但如果需要,可以很容易地使其动态化。