2017-09-01 53 views
0

我想寫一個SQL查詢,其中的輸出是'FRUIT'臨時表'FRUIT'是用'FOOD_TYPE'列創建的,如果不是,那麼臨時表'蔬菜'是用'FOOD_TYPE'列創建的。SQL - 用IF創建臨時表然後

這是我寫的初始查詢。

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

你想創建一個單獨的表名'FRUIT'和'VEGETABLE'的臨時表,或者只是一個臨時表FOOD_TYPE來存儲'FRUIT'和'VEGETABLE'值? –

+1

你使用多個標籤,如sql服務器和mysql,你使用的是 – Noob

+0

我試圖創建一個新的列和一個新的臨時表作爲if和then的結果。如果一列有'APPLE',那麼FOOD TYPE將是FRUIT,它將創建一個臨時表'FRUIT'。如果列沒有APPLE,那麼食物類型爲VEGETABLE,它將使用臨時表創建VEGETABLE – Vinz

回答

0

這可以使用此查詢

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

請注意,像使用%的通配符之前和/或包含在列,如果你是使用「蘋果」的關鍵字後,可以實現或任何其他值,您應該選擇使用equal(=)來代替。

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

+1以重新思考。無論問題的目標是解決什麼問題,都應以不同的方式接近。 – LoztInSpace