我想寫一個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
我想寫一個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
這可以使用此查詢
SELECT CASE WHEN food LIKE '%APPLE%'
THEN (SELECT 'FRUIT' food_type INTO #FRUIT)
ELSE (SELECT 'VEGETABLE' food_type INTO #VEGETABLE)
END
請注意,像使用%的通配符之前和/或包含在列,如果你是使用「蘋果」的關鍵字後,可以實現或任何其他值,您應該選擇使用equal(=)來代替。
您提出的問題引發了更多問題。但是,這是說,我不相信這可以在一個單一的聲明中實現。下面的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
+1以重新思考。無論問題的目標是解決什麼問題,都應以不同的方式接近。 – LoztInSpace
你想創建一個單獨的表名'FRUIT'和'VEGETABLE'的臨時表,或者只是一個臨時表FOOD_TYPE來存儲'FRUIT'和'VEGETABLE'值? –
你使用多個標籤,如sql服務器和mysql,你使用的是 – Noob
我試圖創建一個新的列和一個新的臨時表作爲if和then的結果。如果一列有'APPLE',那麼FOOD TYPE將是FRUIT,它將創建一個臨時表'FRUIT'。如果列沒有APPLE,那麼食物類型爲VEGETABLE,它將使用臨時表創建VEGETABLE – Vinz