select a.col2 as 电压,substring(d.yd_code,1,2) as 所属用电分类,a.gs as 客户个数,c.num as 用电量
from (select col2,count(*) as gs from table1 group by col2) a,
(select hk_id,sum(num) as num from table3 group by hk_id) c,
table2 b,table1 d
where a.col2=d.col2 and c.hk_id=b.hk_id and b.yd_code=d.yd_code

解决方案 »

  1.   

    电压是根据表3里的用户确定的啊,根据用户找到YD_CODE对应的就是电压。
    同一电压可能有多个用户。
      

  2.   

    0202      商业2      20kv  --电压--对应表2
    3    125      0202
    4    126      0202--对应表3
    3    125     50
    4    126     60  --50+60=110--而你统计的结果:
    20kv     02             3         221你不觉得问题描述有问题吗?
      

  3.   

    CREATE table T(电压 varchar(20), 所属用电分类 varchar(20),, 客户个数 int,用电量 int, KH_ID int, YD_CODE varchar(20))
    Insert T (KH_ID, YD_CODE) Select KH_ID, YD_CODE From 表2
    Select Sum(num) As num, KH_ID as KH_ InTo #表3 From 表3 group by KH_ID
    Update T Set 用电量 = num From #表3 Where KH_ID = KH_
    Update T Set 电压 = col2 From 表1 a, T b Where a.YD_CODE = b.YD_CODE
    Select Count(left(YD_CODE, 2)) as num, left(YD_CODE, 2) as YD_ into #num From T 
    Group by left(YD_CODE, 2)) 
    Update T Set 客户个数= num, 所属用电分类 = left(YD_CODE, 2) From #num 
    where left(YD_CODE, 2) = YD_
    Select Max(电压) as 电压, Sum(用电量) as 用电量, 所属用电分类, 客户个数 From T
    Group by 所属用电分类, 客户个数Drop table T, #表3, #num
      

  4.   

    declare @tb1 table (YD_CODE varchar(10),   col1 nvarchar(20),   col2 varchar(10))
    insert into @tb1 select 
    '01'    ,    N'居民照明',''   union all select
    '0101'      ,    N'居民1',      '2kv'  union all select
    '0102'      ,    N'居民2',      '10kv'  union all select
    '02'        ,    N'商业',''  union all select
    '0201'      ,    N'商业1',      '5kv'  union all select
    '0202'      ,    N'商业2',     '20kv'
    declare @tb2 table (ID int,   KH_ID varchar(10),   YD_CODE varchar(10))
    insert into @tb2 select 
    1  ,  '123'  ,    '0101'  union all select
    2  ,  '124'  ,    '0101'  union all select
    3  ,  '125'  ,    '0202' union all select
    4  ,  '126'  ,    '0202'  union all select
    5   , '128'  ,    '0201'
    declare @tb3 table(ID int,   KH_ID varchar(10),  num int)
    insert into @tb3 select 
    1   , '123'  ,   80  union all select 
    2   , '123'  ,   100  union all select 
    2   , '123'  ,   140  union all select 
    3   , '124'  ,   50  union all select 
    3   , '125'  ,   50  union all select 
    4   , '126'  ,   60  union all select 
    5   , '128'  ,   111select a.电压,a.所属用电分类,(select count(*) from @tb2 where YD_CODE=a.YD_CODE) as 客户个数,
    (select isnull(sum(isnull(num,0)),0) from @tb3 where KH_ID in(select KH_ID from @tb2 where YD_CODE=a.YD_CODE )) as 用电量
    from 
    (select distinct col2 as 电压,substring(yd_code,1,2) as 所属用电分类 ,YD_CODE from @tb1 where col2<>'') a
    order by 所属用电分类--结果
    电压         所属用电分类 客户个数        用电量         
    ---------- ------ ----------- ----------- 
    10kv       01     0           0
    2kv        01     2           370
    20kv       02     2           110
    5kv        02     1           111(4 row(s) affected)
      

  5.   

    CREATE table T(电压 varchar(20), 所属用电分类 varchar(20),, 客户个数 int,用电量 int, KH_ID int, YD_CODE varchar(20))
    Insert T (KH_ID, YD_CODE) Select KH_ID, YD_CODE From 表2
    Select Sum(num) As num, KH_ID as KH_ InTo #表3 From 表3 group by KH_ID
    Update T Set 用电量 = num From #表3 Where KH_ID = KH_
    Update T Set 电压 = col2 From 表1 a, T b Where a.YD_CODE = b.YD_CODE
    Select Count(left(YD_CODE, 2)) as num, left(YD_CODE, 2) as YD_ into #num From T 
    Group by left(YD_CODE, 2)) 
    Update T Set 客户个数= num, 所属用电分类 = left(YD_CODE, 2) From #num 
    where left(YD_CODE, 2) = YD_
    Select 电压, Sum(用电量) as 用电量, 所属用电分类, 客户个数 From T
    Group by 电压, 所属用电分类, 客户个数Drop table T, #表3, #num
      

  6.   

    用 LoveSQL(GG) 的就可以了.