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つの列に入力され、他の2つの列にはnullが入力されるため、null値はありません。

ありがとう!

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の値が1つしかないことを前提としています。そうでない場合は、@JeremyHolovacsに同意する必要があります。

データがどこから来たのかがわかるように、SHADOW_IDも@TEMP_TABLE1に入れることをお勧めします。

于 2012-04-20T16:22:56.223 に答える