我正在尝试编写一个SQL查询,其中if输出为'FRUIT'临时表'FRUIT'是使用列'FOOD_TYPE'创建的,如果没有,则创建临时表'VEGETABLE'并使用列' FOOD_TYPE”。
这是我写的初始查询。
select *,
(CASE
WHEN food LIKE 'APPLE'
THEN 'FRUIT'
ELSE 'VEGETABLE'
END) AS FOOD_TYPE
from temptable
答案 0 :(得分: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 FOOD_TYPE=@FOOD_TYPE into #FRUIT
else
select FOOD_TYPE=@FOOD_TYPE into #VEGETABLE
答案 1 :(得分:0)
这可以使用此查询
来实现SELECT CASE WHEN food LIKE '%APPLE%'
THEN (SELECT 'FRUIT' food_type INTO #FRUIT)
ELSE (SELECT 'VEGETABLE' food_type INTO #VEGETABLE)
END
请注意,如果您要使用' APPLE'或任何其他值,您应该选择使用等号(=)。