ORACLE中查询语句中分类汇总写法求助

     数据库中有年度、月份、省份、销售额等数据,用以存放公司各省份各月份的销售额 。现需要以省份为汇总单位查询出各省份的销售额之和。其中,当省份名称为北京、上海、天津、重庆时,查询结果中省份名称合并为‘直辖市’,其他省份名称时就以原名称为准。

     查询语句:SELECT 省份 AS 地区, SUM(销售额列名) AS 业绩 FROM 数据库表名 WHERE  月份条件 GROUP BY 省份。 

     查询语句中省份求不能用CASE语句将所有省份列出(如CASE WHEN 省份=‘北京’OR 省份=‘上海’OR 省份=‘天津’OR 省份=‘重庆’THEN '直辖市'  WHEN 省份=‘广东’THEN ‘广东’WHEN 省份=‘湖南’THEN ‘湖南’…… END AS 地区)。  ORACLE中我的写法是CASE WHEN 省份=‘北京’OR 省份=‘上海’OR 省份=‘天津’OR 省份=‘重庆’THEN '直辖市'  ELSE 省份 END AS 地区 ,但统总是报错,请问这个省份怎么写?

     感谢大神们帮忙完整地写出来,谢谢!

SQL 笑笑宝贝 发布于 2024-12-7 17:36
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
0000Lv2见习互助
发布于2024-12-7 17:52

你的group by 也需要写case when

-----------------

SELECT CASE

         WHEN 省份 = '北京' OR 省份 = '上海' OR 省份 = '天津' OR 省份 = '重庆' THEN

          '直辖市'

         ELSE

          省份

       END AS 地区,

       SUM(销售额列名) AS 业绩

  FROM 数据库表名

 WHERE 月份条件

 GROUP BY CASE

            WHEN 省份 = '北京' OR 省份 = '上海' OR 省份 = '天津' OR 省份 = '重庆' THEN

             '直辖市'

            ELSE

             省份

          END

image.png

最佳回答
0
CD20160914Lv8专家互助
发布于2024-12-7 17:42(编辑于 2024-12-7 17:45)

select t.地区,sum(业绩) as "业绩" from (

select 

case when 省份='北京' or  省份='上海' or  省份='天津' or  省份='重庆' then '直辖市' else 省份

end as "地区",

销售额列名 AS 业绩

from 表名称

) t

group by t.地区

上面这样写oracel是不会报错的。你现在报错是其它地方吧

  • 3关注人数
  • 36浏览人数
  • 最后回答于:2024-12-7 17:52
    请选择关闭问题的原因
    确定 取消
    返回顶部