DECLARE @t TABLE(Groups char(2),Item varchar(10),Color varchar(10),Quantity int)
INSERT @t SELECT 'aa','Table','Blue', 124
UNION ALL SELECT 'bb','Table','Red',  -23
UNION ALL SELECT 'bb','Cup'  ,'Green',-23
UNION ALL SELECT 'aa','Chair','Blue', 101
UNION ALL SELECT 'aa','Chair','Red',  -90

--统计及排序
SELECT Groups=CASE
        WHEN GROUPING(Color)=0 THEN Groups
        WHEN GROUPING(Groups)=1 THEN '总计'
        ELSE '' END,
    Item=CASE
        WHEN GROUPING(Color)=0 THEN Item
        WHEN GROUPING(Item)=1 AND GROUPING(Groups)=0 THEN Groups+' 合计'
        ELSE '' END,
    Color=CASE
        WHEN GROUPING(Color)=0 THEN Color
        WHEN GROUPING(Color)=1 AND GROUPING(Item)=0 THEN Item+' 小计'
        ELSE '' END,
    Quantity=SUM(Quantity)
FROM @t
GROUP BY Groups,Item,Color WITH ROLLUP
ORDER BY GROUPING(Groups),
    CASE WHEN GROUPING(Groups)=1 THEN '' ELSE Groups END DESC,
    GROUPING(Item),
    CASE WHEN GROUPING(Item)=1 THEN '' ELSE Item END DESC,
    GROUPING(Color),
    CASE WHEN GROUPING(Color)=1 THEN '' ELSE Color END DESC,
    Quantity DESC
/*--结果
Groups Item       Color           Quantity    
--------- -------------- ----------------------- -----------
bb     Table      Red             -23
                 Table 小计       -23
bb     Cup       Green           -23
                 Cup 小计        -23
       bb 合计                    -46
aa     Table      Blue            124
                 Table 小计       124
aa     Chair      Red             -90
aa     Chair      Blue            101
                 Chair 小计       11
       aa 合计                    135
总计                              89
--*/

相关文章:

  • 2021-05-21
  • 2021-07-06
  • 2022-02-07
  • 2022-12-23
  • 2021-12-29
  • 2022-12-23
  • 2022-02-04
  • 2022-12-23
猜你喜欢
  • 2021-06-30
  • 2021-08-20
  • 2021-06-07
  • 2021-12-28
  • 2021-09-22
  • 2021-05-17
  • 2021-08-31
相关资源
相似解决方案