2016-04-27 2 views
-1

У меня есть таблица с именем Savannah, и у меня есть 2 столбца: animals и weight.PostgreSQL «IF» issue

В SELECT строка (без WHERE операторов и т. Д.) Мне нужно (с оператором IF) показать «расти историю» для животных под названием «лев».

Это как: if animals = 'lion', show 'weight'

Как я могу это сделать?

Это полный запрос:

SELECT 
    f.id, f.date, f.login, f.fever_id, sum(p.source), 
    CASE animals WHEN 'lion' THEN weight END 
FROM 
    fb_prefer f 
LEFT JOIN 
    region r ON f.region_id = r.id 
LEFT JOIN 
    patrools p ON f.region_id = p.region_id 
LEFT JOIN 
    savannah_stats z ON f.region_id = z.region_id 
WHERE 
    f.source > '0' 
GROUP BY 
    f.id, f.fever_id 
+1

Примечание: в SQL отсутствует оператор 'IF' * *. Но: в вашем случае, возможно, «CASE» может быть полезным. – wildplasser

+0

Моя неудачная команда IF? –

+1

Прочтите эту часть руководства для выражения 'CASE WHEN ... ': http://www.postgresql.org/docs/current/static/functions-conditional.html –

ответ

1
SELECT animals, CASE animals WHEN 'lion' THEN weight END AS "Grow History" 
FROM mytable 
+0

Thx! Но нужно это в форме: SELECT if ((animals = 'lions',) weight) as Grow History FROM mytable –

+0

@RuslanPodgorny: в SQL нет 'if'. Этот ответ вернет именно то, что вы хотите. Попробуй. –

+0

Но как код будет выглядеть, если я хочу знать не только «лев», но и некоторые другие животные? –

0

Вы можете использовать выражение Case для достижения этой цели. Синтаксис выглядит примерно так: SELECT CASE animals КОГДА 'Лев' THEN вес END FROM Savannah;

Вы также можете написать несколько выражений case или несколько выражений WHEN, THEN.

+0

Thx! Но нужно это в форме: SELECT if ((animals = 'lions',) weight) как Grow History FROM mytable –