2012-03-15 15 views
1

選択部分にCASE文を持つSELECT INTOを実行する方法はありますか?私はそれが新しいテーブルに入る前にいくつかのデータ変換を行う必要があります。CASE文を使用してSELECT INTO

答えて

1

です。ここでは、#testはcase文は 'F' で始まる値で、各項目の前に*を追加する場合は、#testnewにコピーされている:

create table #test(id int, item1 varchar(10), item2 varchar(10)) 
insert into #test values(1,'foo','bar') 
, (2,'fud','fudge') 
go 

select t.id 
, item1=case when left(item1,1)='f' then '*'+item1 else item1 end 
, item2=case when left(item2,1)='f' then '*'+item2 else item2 end 
into #testnew 
from #test t 
go 

select * from #testnew; 
go 

drop table #test; 
drop table #testnew; 
go 

結果:

あなたはENDキーワードを必要とする
id   item1  item2 
----------- ----------- ----------- 
1   *foo  bar 
2   *fud  *fudge 
2

はい次のことができます。

SELECT CASE SourceField WHEN 1 THEN 'Yes' ELSE 'No' END AS SourceField 
INTO DestinationTable 
FROM SourceTable 
+1

、右? ELSE 'いいえ' END AS SourceField –

+0

本当に、AdaTheDevはどこに 'END'ですか? ^^ –

+0

うん、修正。 – AdaTheDev

1

はい。列には必ず名前を付けてください。また、問題を避けるために、Caseステートメントの値を明示的な型にキャストしてください。

SELECT 
    Cast((
     Case(ID) 
      When (1) Then 'Text' 
      Else NULL 
     End) as varchar(50) 
    ) as NewColumn 
INTO #TempTable 
FROM MyTable 
関連する問題