Win*_*Too 3 sql postgresql aggregate case
我需要"名"类: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;
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我的程序中有一些错误很少写null(或者''我在pgAdmin中可以看到).在这种情况下,我不得不把那个''一样'0'.但我不能那样做!
我试着这样:
SELECT CASE COALESCE(mycat, '0')
Run Code Online (Sandbox Code Playgroud)
但这根本无法解决.
如何得到''它将与'0'类别相加并组合在一起?
PostgreSQL 9.3,Windows.
您需要在使用COALESCE group by和order by也类似于你打算如何改变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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17201 次 |
| 最近记录: |