我想將資料聚合到 1 個欄位中。所以我有一個這樣的查詢:
SELECT
t.userId,
array_agg(t.column1 || ';' || t.column2) as aggregated
FROM
mytable t
GROUP BY
t.userId
但是,如果 t.column1 為空,而 t.column2 不為空,那么我會回傳一個 NULL。我想回傳這樣的東西:
column1;column2 OR null;column2 OR column1;null
我怎么能用 array_agg 做到這一點?
uj5u.com熱心網友回復:
它不是array_agg,而是||運算子。如果任何元素為空,則它產生空值。為避免這種情況,請使用
concat_ws(';', t.column1, t.column2)
它本質上將null值視為空字串。
如果你想要一個顯式的null字串,你可以使用:
coalesce(t.column1,'null')|| ';' ||coalesce(t.column2, 'null')
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/364922.html
標籤:sql PostgreSQL的
上一篇:如何使用DISTINCTON但ORDERBY另一個運算式?
下一篇:來自陣列內物件的JSON值
