有两张表,一张分类表,一张数据表。分类表FLK年度 编码 分类名称 部门 分类级次   是否末级
YEAR DM TITLE         DEPT    JC      ISEND
2012 001 配件            1        0
2012 00101 眼镜         销售一部   2     1
2012 002 男装            1        0
2012 00201 衬衫         销售二部   2     1
2012 00202 裤子            2     0
2012 0020201 长裤         销售三部   3     1
2012 0020202 短裤         销售一部   3     1数据表FLMX年度 编码   店铺     网络        其他
YEAR XMDM   DIANMIAN  WANGLUO QITA
2012 00101   60     40
2012 00201   50     30
2012 0020201   100     20
2012 0020202   25     70          5要求结果得出:
----------------------------------------------------------------------
年度 编码 分类名称 部门  合计 店铺   网络    其他
YEAR DM TITLE         DEPT   HJ DIANMIAN  WANGLUO  QITA
2012 001 配件           100   60   40
2012 00101 眼镜         销售一部  100   60   40
2012 002 男装           300  175   120    5
2012 00201 衬衫         销售二部  80   50   30
2012 00202 裤子           220  125   90    5
2012 0020201 长裤         销售三部  120   100   20
2012 0020202 短裤         销售一部  100   25   70    5

解决方案 »

  1.   

    if object_id('[FLK]') is not null drop table [FLK]
    go
    create table [FLK]([YEAR] int,[DM] varchar(7),[TITLE] varchar(4),[DEPT] varchar(8),[JC] int,[ISEND] int)
    insert [FLK]
    select 2012,'001','配件',null,1,0 union all
    select 2012,'00101','眼镜','销售一部',2,1 union all
    select 2012,'002','男装',null,1,0 union all
    select 2012,'00201','衬衫','销售二部',2,1 union all
    select 2012,'00202','裤子',null,2,0 union all
    select 2012,'0020201','长裤','销售三部',3,1 union all
    select 2012,'0020202','短裤','销售一部',3,1
    go
    if object_id('[FLMX]') is not null drop table [FLMX]
    go
    create table [FLMX]([YEAR] int,[XMDM] varchar(7),[DIANMIAN] int,[WANGLUO] int,[QITA] int)
    insert [FLMX]
    select 2012,'00101',60,40,null union all
    select 2012,'00201',50,30,null union all
    select 2012,'0020201',100,20,null union all
    select 2012,'0020202',25,70,5
    goSELECT A.[YEAR], A.DM, A.TITLE, A.DEPT, 
      HJ=SUM(ISNULL(B.DIANMIAN,0)+ISNULL(B.WANGLUO,0)+ISNULL(B.QITA,0)),
      DIANMIAN=SUM(DIANMIAN), 
      WANGLUO=SUM(WANGLUO),
      QITA=SUM(QITA)
    FROM [FLK] A
    LEFT JOIN FLMX B ON A.[YEAR]=B.[YEAR] AND [XMDM] LIKE '%'+A.[DM]+'%'
    GROUP BY A.[YEAR], A.DM, A.TITLE, A.DEPT/**
    YEAR        DM      TITLE DEPT     HJ          DIANMIAN    WANGLUO     QITA
    ----------- ------- ----- -------- ----------- ----------- ----------- -----------
    2012        001     配件    NULL     100         60          40          NULL
    2012        00101   眼镜    销售一部     100         60          40          NULL
    2012        002     男装    NULL     300         175         120         5
    2012        00201   衬衫    销售二部     80          50          30          NULL
    2012        00202   裤子    NULL     220         125         90          5
    2012        0020201 长裤    销售三部     120         100         20          NULL
    2012        0020202 短裤    销售一部     100         25          70          5(7 行受影响)
    **/