zoukankan      html  css  js  c++  java
  • sql分级汇总

    --測试数据
    
    create table tb([DB-ID] varchar(10),ENTITY varchar(10),DATE varchar(10),[CUST-NO] int,AMOUNT decimal(10,2),TAX decimal(10,2))
    
    insert tb select 'RCHQ','001','2004-11-10',200000,100.00,17.00
    
    union all select 'RCHQ','001','2004-11-10',200000,200.00,34.00
    
    union all select 'RCHQ','001','2004-11-12',200000,150.00,25.50
    
    union all select 'RCHQ','002','2004-11-10',200000,100.00,17.00
    
    union all select 'RCHQ','002','2004-11-10',200000,200.00,34.00
    
    union all select 'RCHQ','002','2004-11-12',200000,150.00,25.50
    
    go
    
     
    
    --查询
    
    select [DB-ID],ENTITY,DATE,[CUST-NO],AMOUNT,TAX
    
    from(
    
        select [DB-ID]=case 
    
                when grouping([DB-ID])=1 then '合计'
    
                else [DB-ID] end
    
            ,ENTITY=case 
    
                when grouping([DB-ID])=1 then ''
    
                when grouping(ENTITY)=1 then '小计'
    
                else ENTITY end
    
            ,DATE=case 
    
                when grouping([DB-ID])=1 then ''
    
                when grouping(ENTITY)=1 then ''
    
                when grouping(DATE)=1 then '小计'
    
                else DATE end
    
            ,[CUST-NO]=case 
    
                when grouping([DB-ID])=1 then ''
    
                when grouping(ENTITY)=1 then ''
    
                when grouping(DATE)=1 then ''
    
                when grouping([CUST-NO])=1 then '小计'
    
                else cast([CUST-NO] as varchar) end
    
            ,AMOUNT=sum(AMOUNT),TAX=sum(TAX)
    
            ,s1=grouping([DB-ID]),s2=[DB-ID]
    
            ,s3=grouping(ENTITY),s4=ENTITY
    
            ,s5=grouping(DATE),s6=DATE
    
            ,s7=grouping([CUST-NO]),s8=[CUST-NO]
    
        from tb
    
        group by [DB-ID],ENTITY,DATE,[CUST-NO] with rollup
    
        having grouping([CUST-NO])=1
    
        union all
    
        select [DB-ID],ENTITY,DATE,cast([CUST-NO] as varchar),AMOUNT,TAX
    
            ,s1=0,s2=[DB-ID]
    
            ,s3=0,s4=ENTITY
    
            ,s5=0,s6=DATE
    
            ,s7=0,s8=[CUST-NO]
    
        from tb 
    
    )a order by s1,s2,s3,s4,s5,s6,s7,s8
    
    go
    
     
    
    --删除測试
    
    drop table tb
    
    /**
    DB-ID	ENTITY	DATE	CUST-NO	AMOUNT	TAX
    RCHQ	001	2004-11-10	200000	100.00	17.00
    RCHQ	001	2004-11-10	200000	200.00	34.00
    RCHQ	001	2004-11-10	小计	300.00	51.00
    RCHQ	001	2004-11-12	200000	150.00	25.50
    RCHQ	001	2004-11-12	小计	150.00	25.50
    RCHQ	001	小计		450.00	76.50
    RCHQ	002	2004-11-10	200000	100.00	17.00
    RCHQ	002	2004-11-10	200000	200.00	34.00
    RCHQ	002	2004-11-10	小计	300.00	51.00
    RCHQ	002	2004-11-12	200000	150.00	25.50
    RCHQ	002	2004-11-12	小计	150.00	25.50
    RCHQ	002	小计		450.00	76.50
    RCHQ	小计			900.00	153.00
    合计				900.00	153.00
    */

  • 相关阅读:
    非域环境下搭建自动故障转移镜像无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法
    AWS 免费套餐
    SQL Server全时区转换
    SQL Server 连接问题案例解析(1)
    SQL Saturday活动再起
    SqlServerProxy的一些资料
    数据是企业的无价財富——爱数备份存储柜server的初体验(图文)
    JEECG第二期深入使用培训(报名截止2014-06-21)
    Java提高篇(三三)-----Map总结
    经常使用哈希函数的比較及其C语言实现
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6858675.html
Copyright © 2011-2022 走看看