sql server GROUPING() ,GROUPING SETS

grouping函数用来区分NULL值,这里NULL值有2种情况,一是原本表中的数据就为NULL,二是由rollup、cube、grouping sets生成的NULL值。

当为第一种情况中的空值时,grouping(NULL)返回0;当为第二种情况中的空值时,grouping(NULL)返回1。实例如下,从结果中可以看到第二个结果集中原本为null的数据由于grouping函数为1,故显示ROLLUP-NULL字符串。

SELECT RWJZ,RWJZ,RQ 日期,
CASE WHEN GROUPING(WLMC) = 1 THEN ‘小计:’ ELSE WLMC END 供应商名称,
CHMC,XH1,JLDW,SUM(RKSL) RKSL,CGDJ,SUM(CGJE) CGJE,
DJR 登记人,DJSJ 登记时间,DJTS 登记天数,CASE WHEN GROUPING(WLMC) = 1 THEN 1 ELSE 0 END XJZT FROM (
SELECT MID,WLMC+CHMC FZMC,RWJZ,CONVERT(VARCHAR(10),DJRKO.RQ,120) RQ,WLMC,CHMC,
XH1 ,XH2 ,XH3 ,GG1 ,GG2,GG3 ,JLDW , RKSL,
ROUND(CGDJ,4,1)CGDJ, CGJE,DJR,
convert(varchar(10),DJSJ,120) DJSJ,DATEDIFF(day,djrko.rq,djsj) DJTS
FROM DJRKO INNER JOIN DJRKM ON DJRKO.OID = DJRKM.OID WHERE CONVERT(DATE,DJRKO.RQ)
BETWEEN ‘2021-08-30’ AND '2021-12-30’AND DJRKM.OID LIKE ‘CR%’) A
GROUP BY
GROUPING SETS
(FZMC,
(FZMC,CHMC,WLMC,MID,RQ,XH1,XH2,XH3,GG1,GG2,GG3,JLDW,RKSL,CGDJ,CGJE,DJR,RWJZ,DJSJ,DJTS,MID))
FZMC =WLMC+CHMC 多条合并单条
GROUPING SETS(排序值,排序列)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值