2017-09-01 12 views
0

if出力が 'FRUIT'のSQLクエリを作成しようとしています。 'FOOD_TYPE'カラムを使用してテンポラリテーブル 'FRUIT'を作成し、 「VEGETABLE」は列「FOOD_TYPE」で作成されます。SQL - IF THEN ELSEを使用してテンポラリテーブルを作成する

ここに私が書いた最初の質問があります。

select *, 
(CASE 
WHEN food LIKE 'APPLE' 
THEN 'FRUIT' 
ELSE 'VEGETABLE' 
END) AS FOOD_TYPE 
from temptable 
+1

テーブル名 'FRUIT'と 'VEGETABLE'の個別の一時テーブルを作成しようとしていますか、または 'FRUIT'と 'VEGETABLE'の値を格納するFOOD_TYPE列の一時テーブルのみですか? –

+1

あなたは – Noob

+0

を使用しているsql serverとmysqlのような複数のタグを使用しています。ifとthenの結果として新しい列と新しいtempテーブルの両方を作成しようとしています。列に「APPLE」がある場合、FOOD TYPEはFRUITになり、「FRUIT」という一時表が作成されます。列にAPPLEがない場合、FOOD TYPEはVEGETABLEであり、テンポラリテーブルVEGETABLEで作成されます。 – Vinz

答えて

0

これは、あなたが「APPLE」を使用するようにしている場合、LIKEの前および/または列に含まれるキーワードの後に​​ワイルドカードの%を使用していますので、予めご了承ください。このクエリ

SELECT CASE WHEN food LIKE '%APPLE%' 
      THEN (SELECT 'FRUIT' food_type INTO #FRUIT) 
      ELSE (SELECT 'VEGETABLE' food_type INTO #VEGETABLE) 
     END 

を使用して達成することができますまたは他の値を指定する場合は、代わりに等号(=)を使用する必要があります。

2

あなたが質問した質問は、より多くの質問を提起します。しかし、それは言われている、私はこれが単一の声明で達成できるとは思わない。以下のTSQL(私はあなたがMS SQL Serverを使用していると仮定します)は質問を満足させますが、あなたが提示したシナリオはちょっと奇妙に思え、おそらく再考を必要とするかもしれません。

declare @FOOD_TYPE varchar(100); 
select top 1 @FOOD_TYPE = 
(CASE 
WHEN food LIKE 'APPLE' THEN 'FRUIT' 
ELSE 'VEGETABLE' 
END) 
from @foods 

if(@FOOD_TYPE='FRUIT') 
select [email protected]_TYPE into #FRUIT 
else 
select [email protected]_TYPE into #VEGETABLE 
+0

は、それが単一のステートメントで達成することができる大人、FROM SELECT *または他の(WHERE年齢> 18人から名前を選択)AS大人WITH 'VEGETABLE'は、あなたが持っているどんな@food_type値であれ、あなたが持っている選択クエリに置き換えてください。 –

+0

+1が再考されます。どのような問題を解決しようとしていても、別の方法で接近すべきです。 – LoztInSpace

関連する問題