0

我怎么能做到这样的事情?

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

1 回答 1

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 中,这样您就可以知道数据的来源。

于 2012-04-20T16:22:56.223 回答