对没有出现的机构数据默认为0,并且按红灯排序,再按黄灯排序,并且行转列(sql和java代码两种方法)

该博客介绍了如何处理业务需求,即按机构的红灯和黄灯数量进行排序,首先按红灯数,然后按黄灯数。当机构数据未出现时,默认红黄灯数为0。内容包括使用SQL和Java实现方法,其中SQL通过右连接和CASE语句实现,Java通过转换List到Map并进行自定义排序来完成。
摘要由CSDN通过智能技术生成

业务需求:按机构亮灯数排序,先按红灯数排序,再按黄灯数排序;如果没有这个机构,默认红黄灯都是0;总机构,东南区,西北区按顺序默认排在最前面

一,sql解决

select 

  deptCode,

  deptName,

  case when deptCode ='2' then 1 when deptCode ='01' then '2' when deptCode ='02' then '3' end as flag,--这三个机构按顺序排 --在最前面

  --下面行转列

  sum(case when warnLightType ='0' then lightNum else 0 end) redLight ,--红灯

  sum(case when warnLightType ='1' then lightNum else 0 end) yellowLight --黄灯

  from  (

 

 

select 

  xx.dept_code deptCode,

  xx.dept_name deptName,

  yy.warnLightType warnLightType,

  count(yy.warnLightType) lightNum

  from 

   select  

  deptName,

  deptCode,

  warnLightType

from 

 

  ......省略

  ) yy  right join

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值