当前位置:首页 >> 开发者生态 >> 【sql】【mysql】【数据库】复杂查询中避免Join的办法,deluxe14(sql复杂查询案例)

【sql】【mysql】【数据库】复杂查询中避免Join的办法,deluxe14(sql复杂查询案例)

cpugpu芯片开发光刻机 开发者生态 6
文件名:【sql】【mysql】【数据库】复杂查询中避免Join的办法,deluxe14 【sql】【mysql】【数据库】复杂查询中避免Join的办法 【背景】

很多场景下,需要将长表根据不同的搜索条件GroupBy之后变成横向的短表,例如:

分公司收益年份a1002022b2002022c3002022a4002021b5002021c6002021

想要变化为:

分公司2022收益2021收益a100400b200500c300600

笨办法是分别通过where 年份=2021和where 年份=2022并以分公司groupby后获得相同结构的列,然后以分公司为条件进行join。这种写法的问题在于有几列就要写几个相同结构的子查询,然后将所有列Join,非常繁杂且难于维护。

【更简洁的写法】

用case when配合sum:

SELECT分公司,SUM(CASE WHEN YEAR(年份) = 2022 THEN 收益 END) AS 2022收益,SUM(CASE WHEN YEAR(年份) = 2021 THEN 收益 END) AS 2021收益FROMtransactionsGROUP BY分公司;

一个查询就可以搞定,而且非常便于维护。

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2026年1月    »
1234
567891011
12131415161718
19202122232425
262728293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接