带有多个where子句的SQL插入

时间:2012-04-20 16:01:08

标签: sql insert

我怎么能达到这样的目的?

DECLARE @TEMP_TABLE TABLE (DATA VARCHAR(MAX), SHADOW_ID INT)
DECLARE @TEMP_TABLE1 TABLE (ENT VARCHAR(MAX), RMR VARCHAR(MAX), DTM VARCHAR(MAX))

INSERT INTO @TEMP_TABLE1 (ENT) SELECT DATA from @TEMP_TABLE WHERE DATA LIKE 'ENT%'
INSERT INTO @TEMP_TABLE1 (RMR) SELECT DATA from @TEMP_TABLE WHERE DATA LIKE 'RMR%'
INSERT INTO @TEMP_TABLE1 (DTM) SELECT DATA from @TEMP_TABLE WHERE DATA LIKE 'DTM%'

没有任何空值,因为每个语句填充1列,空值为其他两个。

谢谢!

1 个答案:

答案 0 :(得分:2)

您似乎正在尝试创建数据透视或交叉表查询。

insert into @TEMP_TABLE1 (ENT, RMR, DTM)
select a.ENT, a.RMR, a.DTM
from (
    select t.SHADOW_ID
        , (select DATA from @TEMP_TABLE where SHADOW_ID = t.SHADOW_ID and DATA like 'ENT%') as ENT
        , (select DATA from @TEMP_TABLE where SHADOW_ID = t.SHADOW_ID and DATA like 'RMR%') as RMR
        , (select DATA from @TEMP_TABLE where SHADOW_ID = t.SHADOW_ID and DATA like 'DTM%') as DTM
    from @TEMP_TABLE as t
    group by t.SHADOW_ID
) a

假设每个SHADOW_ID只有一个ENT,RMR和DTM值。如果情况并非如此,那么我必须同意@JeremyHolovacs。

我建议也将SHADOW_ID放入@ TEMP_TABLE1,这样你就可以知道数据的来源。