簡體   English   中英

Postgres中的條件分支

[英]Conditional branch in Postgres

我有一個表定義為

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只有一行,其值為'Meeting',因此返回'Meeting'。 否則,返回“ Multi_type”作為查詢結果。 我試過了 :

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

但是我需要再次按類型分組,這會導致錯誤的結果。

一個簡單的解決方案是在各處使用聚合函數,例如

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM