gpt4 book ai didi

sql - PostgreSQL,选择案例合并

转载 作者:行者123 更新时间:2023-11-29 11:38:43 25 4
gpt4 key购买 nike

我需要“命名”类别:mycat 是一个 text 列,可能的值为 '0''4'

SELECT CASE mycat                                       
WHEN '0' THEN 'ZERO'
WHEN '1' THEN 'ONE'
WHEN '2' THEN 'TWO'
WHEN '3' THEN 'THREE'
WHEN '4' THEN 'OTHER'
END AS my_category,
COALESCE(SUM(col1), 0),
COALESCE(SUM(col2), 0),
COALESCE(SUM(col3), 0)
FROM mytable
GROUP BY mycat
ORDER BY mycat;

工作正常,但我的程序中有一些错误,很少写入 null(或 '',正如我在 pgAdmin 中看到的那样)。在这种情况下,我必须将 '' 视为与 '0' 相同。但是我听不懂!

我这样尝试:

SELECT CASE COALESCE(mycat, '0')

但这根本没有解决问题。
如何让'''0'类一起求和分组?

PostgreSQL 9.3,Windows。

最佳答案

您需要在 group byorder by 中使用 COALESCE,这也类似于您计划更改 case 表达式的方式,但是 postgres给出错误,所以另一种选择是将您的语句包装在子查询中并执行 group by

SELECT my_category, 
COALESCE(SUM(col1), 0),
COALESCE(SUM(col2), 0),
COALESCE(SUM(col3), 0)
FROM
(
SELECT CASE coalesce(mycat ,'0')
WHEN '0' THEN 'ZERO'
WHEN '1' THEN 'ONE'
WHEN '2' THEN 'TWO'
WHEN '3' THEN 'THREE'
WHEN '4' THEN 'OTHER'
WHEN '' THEN 'ZERO'
END AS my_category,
col1,
col2,
col3
FROM mytable
) T
GROUP BY my_category
ORDER BY my_category

关于sql - PostgreSQL,选择案例合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27300552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com