Как я могу использовать созданный столбец в запросе, в том же запросе? - PullRequest
0 голосов
/ 02 марта 2012

Пусть говорит, что я делаю

CASE WHEN apples.fruits = 'Macintosh' THEN 'Green' END AS FruitBasket

Как я могу внести изменения, используя корзину с фруктами сейчас?в этом самом запросе?

Я бы хотел сказать

CASE WHEN FruitBasket = 'Green' THEN 'Awesome' END AS IsItGood

Имейте в виду, я бы хотел, чтобы эти две строки кода выполнялись в одном запросе.

Ответы [ 2 ]

1 голос
/ 02 марта 2012

Не могли бы вы вставить этот первый запрос во временную таблицу, а затем обновить эту временную таблицу?

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
0 голосов
/ 11 октября 2012

Наилучшим подходом является табличный метод.

 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.before fruit_basket.

Обратите внимание, что это будет хорошо работать, так как работает с кортежем из таблицы и не попадает прямо в таблицу.Он может быть встроен в качестве макроса SQL планировщиком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...