ORACLE 分组之后容易被忽略的bug

时间:2021-02-20 08:48:18

COL_2 COL_3
21       31
23       31

如上表数据

前台显示显示需要把COL_2的21和23转换成中文 ‘整机’ 最开始如下编写

SELECT t.col_3,
CASE t.col_2
WHEN 21 THEN
 ‘整机’ 
WHEN 23 THEN
 ‘整机’ 
END
FROM a_test_1 t
GROUP BY t.col_3,t.col_2

得到的结果如下:

31 整机
31 整机

客户想看的其实是一条数据,则可以改为如下:

SELECT t.col_3,
CASE t.col_2
WHEN 21 THEN
'整机'
WHEN 23 THEN
'整机'
END
FROM a_test_1 t
WHERE t.col_3 = 31
GROUP BY t.col_3,
CASE t.col_2
WHEN 21 THEN
'整机'
WHEN 23 THEN
'整机'
END

把case语句放入group by 就可以了。