Postgres中的条件分支

时间:2017-10-03 13:47:39

标签: sql postgresql case

我有一个表定义为

CREATE TABLE public.area
(
    id INT,
    type VARCHAR(45)
);

然后我执行了以下SQL:

WITH type_area AS (
    SELECT type
    FROM area
    WHERE area.id = 300
  GROUP BY type
)

从type_area我有一组不同的类型。现在,如果集合只包含一种类型,我需要返回该类型,否则' Multi_type'将被退回。

例如:type_area只有一行,值为'会议'所以'会议'退回。否则' Multi_type'作为查询结果返回。 我试过了:

SELECT CASE WHEN count(type) > 1 THEN 'Multi_type'
       ELSE type
       END
FROM type_area

但我需要再按类型分组,这会导致错误的结果。

1 个答案:

答案 0 :(得分:2)

一个简单的解决方案是在任何地方使用聚合函数,例如

CASE WHEN count(type) > 1
     THEN 'Multi_type'
     ELSE max(type)
END