Как добавить оператор WHERE в оператор WHERE в Postgres? - PullRequest
0 голосов
/ 02 марта 2012

Я хотел бы сделать что-то вроде этого:

CASE WHEN Derp.Herp = 'Nerp' THEN 'Gerp' ELSE NULL ENDS AS Herpty WHERE Herpty IS NOT NULL

Идея состоит в том, что я хотел бы, чтобы это выполнялось в том же запросе, но проблема в том,что Postgres обычно говорит мне, что Herpty не существует (возможно, потому, что он создается в том же запросе), может быть, есть соглашение или обходной путь?Идея для меня заключается в том, чтобы получить столбец Герпти, исключая то, что не 'Nerp' в Derp.Herp, и я не хочу возвращать NULL.

ОБНОВЛЕНИЕ: ответы, которые я получил до сих пор, не помоглимой фактический запрос немного сложнее, я не могу вставить в оператор WHERE WHERE Derp.Herp <> 'Nerp', поскольку в моем фактически Query он фактически проходит через 2 столбца в операторе WHEN, так что это больше похоже на: Derp.Herp = 'Nerp' AND Derp.Burp = 'Durp' THEN 'Gerp', так что если я перейду кдобавьте, что в предложении WHERE это становится неоднозначным, WHERE Derp.Herp <> 'Nerp' AND Derp.Burp <> 'Durp' полностью устранит Nerp и Durp, даже если они не совпадают в 2 столбцах, я делаю эту работу для некоммерческой организации, пожалуйста, помогите.

Вот моя попытка переписать мой код, чтобы точнее отразить его: http://pastebin.com/PgvAFvfq

Ответы [ 4 ]

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

Краткий ответ: нет, не совсем.Это вычисляемый столбец, он не доступен в предложении WHERE.Но согласно вашему примеру, вы можете просто сделать что-то вроде

WHERE Derp.Hepr <> 'NERP'

Но тогда весь ваш запрос кажется в значительной степени бесполезным.Вы должны показать нам свой реальный запрос.

0 голосов
/ 05 марта 2012

Проверьте это. Я надеюсь, что это сработает.

SELECT CASE WHEN Derp.Herp = 'Nerp' AND Derp.Burp = 'Durp' 
            THEN 'Gerp'
FROM (SELECT * FROM YOURTABLE 
               WHERE Derp.Herp <> 'Nerp' AND Derp.Burp <> 'Durp') Derp
0 голосов
/ 03 марта 2012

Вы пробовали:

СЛУЧАЙ, КОГДА Derp.Herp = 'Nerp', ТОГДА 'Gerp', ЧТО ЕЩЕ НУЛЬ КОНЦА, КАК ГЕРПТИ, ГДЕ, КОГДА, КОГДАNULL

0 голосов
/ 02 марта 2012

Вы можете просто немного реорганизовать свой запрос;

SELECT CASE WHEN Derp.Herp = 'Nerp' THEN 'Gerp' ELSE NULL ENDS AS Herpty 
WHERE Herpty IS NOT NULL

- это то же самое, что

SELECT 'Gerp' AS Herpty WHERE Derp.Herp = 'Nerp';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...