数据表如下:
  项目        当月电量  累计电量  其它电量
省公司合计
500
220
地方公司合计
100
35
是这样的,单位分:省公司和6个地方公司,
省公司填写:省公司合计,500,220三个
6个地方公司填写:220<注意>,地方公司合计,100,35
<以上都存储一个表里,当然是在分别的页面填写的>我现在想用一条SQL得出上面这个表,其中220,的只选省公司填写的,100,35要选出所有的来对应的加在一起的。也就是说:省公司合计,500,220,选择省公司当月填写的。
100,35的是所有分公司当月的对应的和。谢谢!

解决方案 »

  1.   

    select v.项目,v.当月用电量,v.累计电量 from (select '省公司' as 项目,当月用电量,累计电量 from 数据表 where 项目=‘省公司’union all select '分公司' as 项目,sum(当月用电量) as 当月用电量 ,sum(累计电量) as 累计电量  from 数据表 where 项目=‘分公司’) v
      

  2.   

    楼主把表的结构和数据贴出来一部份给大家看看。
    给个例子:
    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
    --*/