2014-11-17 3 views
1

Я хотел сделать что-то вроде:Вставить в с условной константой

insert into Table(a, b, c) 
select a, b, 1 from OtherTable 
where a > 0 

Но где с бы значением какого-либо Enum, основанной на определенном условии ИНЕКЯ.

Я хочу конечный результат будет что-то подобное (даже если это не работает):

insert into Table(a, b, c) 
select a, b, x from OtherTable, YetAnotherTable 
where a > 0 AND (IF a=b THEN x = 'Enum1' ELSE x = 'Enum2' ENDIF) 

Как вы думаете, что-то, как это возможно в одном операторе?

+0

Да, нет никаких причин, вы не можете сделать это .. Если вы предоставите структуру таблицы и некоторые выборочные данные, вы можете получить более конкретный ответ .. – StevieG

ответ

1

Вы можете использовать case выражение:

insert into Table(a, b, c) 
select a, 
     b, 
     CASE WHEN a = b THEN 'Enum1' ELSE 'Enum2' END 
from OtherTable, YetAnotherTable 
where a > 0 
+0

Просто из любопытства: любая идея, почему 'IF a = b THEN 'Enum1' ELSE 'Enum2' END' является синтаксической ошибкой? – gcandal

+0

@ GCC404 Конструкция 'IF' в Postgres не должна заканчиваться на' END', но в 'END IF' (см., Например, [здесь] (http://www.postgresql.org/docs/9.1/static/plpgsql -контроль-structures.html)). – Mureinik

Смежные вопросы