如何从“分组”其他表中向表中插入值? 这意味着我有2个不同结构的表。
表ORDRE与现有DATA
表ORDRE:
ORDRE ID | CODE_DEST |
-------------------------
1 | a |
2 | b |
3 | c |
4 | a |
5 | a |
6 | b |
7 | g |
我想要将值FROM FROM ORDRE INTO TABLE VOIT:
插入 ID_VOIT | ORDRE ID | CODE_DEST |
---------------------------------------
1 | 1 | a |
1 | 4 | a |
1 | 5 | a |
2 | 2 | b |
2 | 6 | b |
3 | 3 | c |
4 | 7 | g |
答案 0 :(得分:3)
这是我对你所需要的最好的猜测,仅使用可用的信息。
declare @Ordre table
(
ordre_id int,
code_dest char(1)
)
declare @Voit table
(
id_voit int,
ordre_id int,
code_dest char(1)
)
insert into @Ordre values
(1,'a'),
(2,'b'),
(3,'c'),
(4,'a'),
(5,'a'),
(6,'b'),
(7,'g')
insert into @Voit
select id_voit, ordre_id, rsOrdre.code_dest
from @Ordre rsOrdre
inner join
(
select code_dest, ROW_NUMBER() over (order by code_dest) as id_voit
from @Ordre
group by code_dest
) rsVoit on rsVoit.code_dest = rsOrdre.code_dest
order by id_voit, ordre_id
select * from @Voit
答案 1 :(得分:0)
对于您提供的具体数据,这有用:
insert into VOIT
select
case code_dest
when 'a' then 1
when 'b' then 2
when 'c' then 3
when 'g' then 4
else 0
end, orderId, code_dest from ORDRE order by code_dest, orderId
但它有点糟糕,因为它需要在一个巨大的案例陈述中进行硬编码。
测试在这里 - http://data.stackexchange.com/stackoverflow/q/119442/
我更喜欢将VOIT ID / Code_Dest关联移动到新表,因此您可以改为inner join
。
insert into VOIT
select voit_id, orderId, t.code_dest
from ORDRE t
join Voit_CodeDest t2 on t.code_dest = t2.code_dest
order by code_dest, orderId
此处的工作示例 - http://data.stackexchange.com/stackoverflow/q/119443/