我说我做了
CASE
WHEN apples.fruits = 'Macintosh' THEN 'Green'
END AS FruitBasket
我现在如何使用水果篮进行更改?在这个非常查询中?
我想说
CASE
WHEN FruitBasket = 'Green' THEN 'Awesome'
END AS IsItGood
请记住,我希望这两行代码能够在同一个查询中运行。
答案 0 :(得分:1)
不能将第一个查询插入临时表,然后更新该临时表吗?
Select into #temp CASE WHEN apples.fruits = 'Macintosh' THEN 'Green' END AS FruitBasket, othercolumn1,othercolumn2
select CASE WHEN FruitBasket = 'Green' THEN 'Awesome' END AS IsItGood from #temp
答案 1 :(得分:0)
最佳方法是表格方法。
CREATE FUNCTION fruit_basket(apples) RETURNS text LANGUAGE SQL AS $$
CASE WHEN $1.fruits = 'Macintosh' THEN 'Green' END; $$;
然后你可以像列一样使用它,除非你必须限定它,因为支持class.method语法。
SELECT CASE WHEN a.fruit_basket = 'Green' THEN 'Awesome' end as is_it_good
FROM apples a;
注意这会将a.fruit_basket变成fruit_basket(a),所以你不能省略a。在fruit_basket之前。
请注意,这将表现良好,因为它对表中的元组进行操作,并且不会直接命中表。它可以由规划器作为SQL宏内联。