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
--*/

解决方案 »

  1.   

    select
    case 
         when (grouping(ssdept)=1) then '全区'
         else isnull(ssdept,'')
    end as ssdept,
    case 
         when grouping(zl)=1 and grouping(ssdept)=0 then '小计'
         when grouping(zl)=1 then '合计'
         else isnull(zl,'')
    end as zl,
    sum(fsmoney) as fsmoney ,sum(shmoney) as shmoney ,sum(tkmoney) as tkmoney,sum(jy) as jy from t_luru
     where tj='已提交' and fsdate between '2008-01-01' and '2008-05-31' 
     group by ssdept,zl with rollup;
    这是我修改过的,在查询分析器里可以实现了,但是在往vs中应用的时候提示有错,高手能不能帮我一下,看看在往vs中复制的时候还要作什么修改么