2012-04-20 124 views
0

我怎麼能達到這樣的事?SQL Insert with multiple where子句

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列並將空值填充到另外兩個空值中。

謝謝!

+4

我無法想象爲什麼你會想這樣做。 – 2012-04-20 16:03:20

+0

對於你的第二次插入,你的意思是'在哪裏數據'RMR%'? – 2012-04-20 16:13:14

+0

是的我的不好,我會進行更正 – OBL 2012-04-20 16:14:10

回答

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中,這樣您就可以知道數據來自何處。

+0

我以其他方式解決了問題。但仍然感謝您的幫助。 – OBL 2012-04-20 17:52:51