我正在使用 PostgreSQL 8.4.4 。我想根据多个条件从表中获取记录,
1)检查记录是否存在
2)如果存在则 - >如果type_id为1则选择名称 如果type_id为2,则选择name,缩写
3)如果记录没有退出则打印为'Missing'
以下是对同一
的查询select
case
when exists (select NAME || ' ' || ABBREVIATION from CONTACTS_COMPANY where id = 15)
then ( select
case
when type_id = '1'
then (select UPPER(NAME) from CONTACTS_COMPANY where id = 15)
when type_id = '2'
then (select UPPER(NAME) || ' ' || UPPER(ABBREVIATION) from CONTACTS_COMPANY where id = 15)
end
)
else UPPER('MISSING')
end
当触发上面的查询时,我收到错误
SQL错误:
错误:列“type_id”不存在
第7行:当type_id =时 '1'
我没有得到究竟导致错误的原因。任何帮助,将不胜感激。 提前谢谢!
答案 0 :(得分:0)
假设“type_id”确实存在(你可能确定了......?),我会说查询结构不正确。 你最外面的选择错过了一个“来自” - 陈述。 此外,你的内心陈述是不正确的。看起来应该是这样的:
select
case
when exists
(select ('NAME' || ' ' || 'ABBREVIATION')
from "CONTACTS_COMPANY")
then (
case
when type_id = '1'
then UPPER("NAME")
when type_id = '2'
then UPPER("NAME") || ' ' || UPPER("ABBREVIATION")
end
)
else UPPER('MISSING')
end
from "CONTACTS_COMPANY"
WHERE id='15'
我没有测试过这个,但一般结构应该没问题。我希望你能正确理解,你想要做什么。如果不是这样,请发表评论:)
将代码更新为工作解决方案