postgres时是否可以跳过CASE中的列

时间:2018-08-23 06:22:10

标签: sql postgresql postgresql-9.6

我有一个查询:

SELECT o.version, o.text, o.id 
case when language=1 
then o.language else [SKIP LANGUAGE COLUMN] end as language  
FROM books AS o 

如果language是否可以跳过列language!=1? 所以如果language = 1我想得到: 版本|文本| id |语言

否则: 版本| textt | id | (无语言列)

1 个答案:

答案 0 :(得分:2)

“ postgres出现时,是否可以跳过情况?”

如果用“跳过”表示查询项目在结果集中的列数不同,例如@a_horse_with_no_name注释,否。

您可以在else表达式中分配空值(或其他值)。

case when language=1 then o.language else null end as language  

或者如果需要空值,则将其他内容排除在外

case when language=1 then o.language end as language  

如果必须投影不同数量的列,则需要执行两个单独的查询。