在查询中使用多个条件时出错


Error while using multiple conditions in query

我正在使用PostgreSQL 8.4.4。我想根据多个条件从表中获取记录,如

1)检查记录是否存在

2) if exists then -> if type_id = 1 then select name如果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行:when type_id =' 1 '

我不知道究竟是什么导致错误。任何帮助都会很感激。提前感谢!

假设"type_id"确实存在(您可能已经确定了…?),我会说这个查询的结构不正确。最外层的select漏掉了"from"语句。此外,你的内心陈述是不正确的。它应该看起来像这样:

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'

我还没有测试过这个,但是总体结构应该没问题。我希望我已经正确理解了,你们想要做的。如果不是这样,请发表评论:)

更新代码到工作解决方案