Postgres IF table.x> table.y - PullRequest
       4

Postgres IF table.x> table.y

0 голосов
/ 07 сентября 2011

Можно ли сделать следующий псевдокод в Postgres 8+ или универсальный SQL?

SELECT table1.a, table1.b ... table1.x, (IF table1.x > table1.y RETURN table1.y ELSE return table1.x AS table1.y), table1.z...

Ответы [ 2 ]

2 голосов
/ 07 сентября 2011

LEAST является хорошим решением в этом случае, но более общим преобразованием будет выражение CASE

SELECT 
    table1.a,
    table1.b,
    ... 
    table1.x, 
    CASE WHEN table1.x > table1.y THEN table1.y ELSE table1.x END AS y,
    table1.z
    ...
1 голос
/ 07 сентября 2011

Почему бы просто не переписать подзапрос как

SELECT LEAST(table1.x, table1.y) AS lst

и затем используйте lst везде, где вы сейчас используете table1.x?

См. Руководство Postgres для описания LEAST.

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