postgre——case、union、小计总计(GROUP BY ROLLUP)写法

//将几张不同表结构的数据全部合并在一起,使用了case、union,同时实现小计总计
//小计总计使用的 GROUP BY ROLLUP函数,GROUP BY ROLLUP使用双括号将字段括起来,是将这些字段分为一组,只会产生一个总计
select case when t_all.temp_comm is null then '总计' else t_all.temp_comm end as temp_comm,
commodity_name,guige,t_bi_commbaseinfo.comm_type_id,comm_type_name,t_all.temp_bill,t_all.temp_date,
sum(temp_inCount) as temp_inCount,temp_inPrice as temp_inPrice,
sum(temp_inCount*temp_inPrice) as temp_inTotal,
sum(temp_inCount*temp_inPrice*(1-temp_inTax)) as temp_inTatolTax,
sum(temp_inCount*temp_inTax*temp_inPrice) as temp_inTaxTatal,
sum(temp_outCount) as temp_outCount,temp_outPrice as temp_outPrice,
sum(temp_outCount*temp_outPrice) as temp_outTotal,
sum(temp_retailPrice*temp_inCount) as temp_inSaleTotal,
sum((temp_retailPrice-temp_inPrice)*temp_inCount) as temp_outDivInTotal,
sum(temp_inCount-temp_outCount) as temp_outDivIn,
sum(temp_inCount*temp_inPrice) as temp_divTotal
from ((SELECT receipt_num AS temp_bill,shd.commodity_id as temp_comm,sh.check_date AS temp_date,
				(CASE WHEN shd.order_real_inprice IS NOT NULL THEN shd.order_real_inprice ELSE 0 END) AS temp_inPrice,0 as temp_outPrice,
				(case when t_bi_commbaseinfo.retail_price is not null then t_bi_commbaseinfo.retail_price else 0 end) AS temp_retailPrice,
				(CASE WHEN shd.in_tax IS NOT NULL THEN shd.in_tax ELSE 0 END) AS temp_
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值