从table1,table2中取出如table3所列格式数据,注意提供的数据及结果不准确,只是作为一个格式向大家请教。
如使用存储过程也可以。table1月份mon 部门dep 业绩yj
-------------------------------
一月份 01 10
一月份 02 10
一月份 03 5
二月份 02 8
二月份 04 9
三月份 03 8table2部门dep 部门名称dname
--------------------------------
01 国内业务一部
02 国内业务二部
03 国内业务三部
04 国际业务部table3 (result)部门dep 一月份 二月份 三月份
--------------------------------------
01 10 null null
02 10 8 null
03 null 5 8
04 null null 9

解决方案 »

  1.   

    参考
    select 
      name,
      sum(case day(日期) when 1 then 销售额  end) as [1],
      sum(case day(日期) when 2 then 销售额  end) as [2],
      sum(case day(日期) when 3 then 销售额  end) as [3],
      sum(case day(日期) when 4 then 销售额  end) as [4],
      sum(case day(日期) when 5 then 销售额  end) as [5],
      sum(case day(日期) when 6 then 销售额  end) as [6],
      sum(case day(日期) when 7 then 销售额  end) as [7],
      sum(case day(日期) when 8 then 销售额  end) as [8],
      sum(case day(日期) when 9 then 销售额  end) as [9],
      sum(case day(日期) when 10 then 销售额  end) as [10],
      sum(case day(日期) when 11 then 销售额  end) as [11],
      sum(case day(日期) when 12 then 销售额  end) as [12],
      sum(case day(日期) when 13 then 销售额  end) as [13],
      sum(case day(日期) when 14 then 销售额  end) as [14],
      sum(case day(日期) when 15 then 销售额  end) as [15],
      sum(case day(日期) when 16 then 销售额  end) as [16],
      sum(case day(日期) when 17 then 销售额  end) as [17],
      sum(case day(日期) when 18 then 销售额  end) as [18],
      sum(case day(日期) when 19 then 销售额  end) as [19],
      sum(case day(日期) when 20 then 销售额  end) as [20],
      sum(case day(日期) when 21 then 销售额  end) as [21],
      sum(case day(日期) when 22 then 销售额  end) as [22],
      sum(case day(日期) when 23 then 销售额  end) as [23],
      sum(case day(日期) when 24 then 销售额  end) as [24],
      sum(case day(日期) when 25 then 销售额  end) as [25],
      sum(case day(日期) when 26 then 销售额  end) as [26],
      sum(case day(日期) when 27 then 销售额  end) as [27],
      sum(case day(日期) when 28 then 销售额  end) as [28],
      sum(case day(日期) when 29 then 销售额  end) as [29],
      sum(case day(日期) when 30 then 销售额  end) as [30],
      sum(case day(日期) when 31 then 销售额  end) as [31]
    from tb
    where datediff(mm,日期,getdate())=0
    group by name
      

  2.   

    --1) 
    select a.部门名称dname,b.业绩yj as '一月份',c.业绩yj as '二月份',d.业绩yj as '三月份' 
    from table1 a,table2 b,table2 c,table2 d 
    where a.部门dep = b.部门dep and b.月份mon = '一月份' and 
    a.部门dep = c.部门dep and c.月份mon = '二月份' and 
    a.部门dep = d.部门dep and d.月份mon = '三月份' and 
    --2) 
    select a.dep, 
    sum(case when b.mon=1 then b.yj else 0 end) as '一月份', 
    sum(case when b.mon=2 then b.yj else 0 end) as '二月份', 
    sum(case when b.mon=3 then b.yj else 0 end) as '三月份', 
    sum(case when b.mon=4 then b.yj else 0 end) as '四月份', 
    sum(case when b.mon=5 then b.yj else 0 end) as '五月份', 
    sum(case when b.mon=6 then b.yj else 0 end) as '六月份', 
    sum(case when b.mon=7 then b.yj else 0 end) as '七月份', 
    sum(case when b.mon=8 then b.yj else 0 end) as '八月份', 
    sum(case when b.mon=9 then b.yj else 0 end) as '九月份', 
    sum(case when b.mon=10 then b.yj else 0 end) as '十月份', 
    sum(case when b.mon=11 then b.yj else 0 end) as '十一月份', 
    sum(case when b.mon=12 then b.yj else 0 end) as '十二月份', 
    from table2 a left join table1 b on a.dep=b.dep 
      

  3.   

    --1) 
    select a.部门名称dname,b.业绩yj as '一月份',c.业绩yj as '二月份',d.业绩yj as '三月份' 
    from table1 a,table2 b,table2 c,table2 d 
    where a.部门dep = b.部门dep and b.月份mon = '一月份' and 
    a.部门dep = c.部门dep and c.月份mon = '二月份' and 
    a.部门dep = d.部门dep and d.月份mon = '三月份' and 
    --2) 
    select a.dep, 
    sum(case when b.mon=1 then b.yj else 0 end) as '一月份', 
    sum(case when b.mon=2 then b.yj else 0 end) as '二月份', 
    sum(case when b.mon=3 then b.yj else 0 end) as '三月份', 
    sum(case when b.mon=4 then b.yj else 0 end) as '四月份', 
    sum(case when b.mon=5 then b.yj else 0 end) as '五月份', 
    sum(case when b.mon=6 then b.yj else 0 end) as '六月份', 
    sum(case when b.mon=7 then b.yj else 0 end) as '七月份', 
    sum(case when b.mon=8 then b.yj else 0 end) as '八月份', 
    sum(case when b.mon=9 then b.yj else 0 end) as '九月份', 
    sum(case when b.mon=10 then b.yj else 0 end) as '十月份', 
    sum(case when b.mon=11 then b.yj else 0 end) as '十一月份', 
    sum(case when b.mon=12 then b.yj else 0 end) as '十二月份', 
    from table2 a left join table1 b on a.dep=b.dep 
      

  4.   

    这是十二个月的。。
    如果LZ想只要三个月 就把语句拿掉几个就是了
    select a.dep, 
    sum(case when left(b.mon,1)='一' then b.yj else 0 end) as '一月份', 
    sum(case when left(b.mon,1)='二' then b.yj else 0 end) as '二月份', 
    sum(case when left(b.mon,1)='三' then b.yj else 0 end) as '三月份', 
    sum(case when left(b.mon,1)='四' then b.yj else 0 end) as '四月份', 
    sum(case when left(b.mon,1)='五' then b.yj else 0 end) as '五月份', 
    sum(case when left(b.mon,1)='六' then b.yj else 0 end) as '六月份', 
    sum(case when left(b.mon,1)='七' then b.yj else 0 end) as '七月份', 
    sum(case when left(b.mon,1)='八' then b.yj else 0 end) as '八月份', 
    sum(case when left(b.mon,1)='九'then b.yj else 0 end) as '九月份', 
    sum(case when left(b.mon,1)='十' then b.yj else 0 end) as '十月份', 
    sum(case when left(b.mon,1)='十一' then b.yj else 0 end) as '十一月份', 
    sum(case when left(b.mon,1)='十二' then b.yj else 0 end) as '十二月份', 
    from table2 a  join table1 b on a.dep=b.dep 
    group by a.dep
      

  5.   

    -- =========================================
    -- -----------t_mac 小编-------------
       ---希望有天成为大虾---- 
    -- =========================================IF OBJECT_ID('tb1') IS NOT NULL
      DROP TABLE tb1
    GO
    CREATE TABLE tb1(mon varchar(40),dep varchar(10),yj int)
    go
    insert into tb1
    select  
    '一月份' ,'01' ,10 union all select 
    '一月份' ,'02' ,10 union all select 
    '一月份' ,'03', 5 union all select 
    '二月份' ,'02', 8 union all select 
    '二月份', '04' ,9 union all select 
    '三月份' ,'03' ,8 go
    IF OBJECT_ID('tb2') IS NOT NULL
      DROP TABLE tb2
    GO
    CREATE TABLE tb2(dep varchar(10),dname varchar(40))
    go
    insert into tb2
    select  
    '01' ,'国内业务一部' union all select
    '02' ,'国内业务二部' union all select
    '03' ,'国内业务三部' union all select
    '04' ,'国际业务部' 
    go
    select a.dep, 
    sum(case when left(b.mon,1)='一' then b.yj else 0 end) as '一月份', 
    sum(case when left(b.mon,1)='二' then b.yj else 0 end) as '二月份', 
    sum(case when left(b.mon,1)='三' then b.yj else 0 end) as '三月份', 
    sum(case when left(b.mon,1)='四' then b.yj else 0 end) as '四月份', 
    sum(case when left(b.mon,1)='五' then b.yj else 0 end) as '五月份', 
    sum(case when left(b.mon,1)='六' then b.yj else 0 end) as '六月份', 
    sum(case when left(b.mon,1)='七' then b.yj else 0 end) as '七月份', 
    sum(case when left(b.mon,1)='八' then b.yj else 0 end) as '八月份', 
    sum(case when left(b.mon,1)='九'then b.yj else 0 end) as '九月份', 
    sum(case when left(b.mon,1)='十' then b.yj else 0 end) as '十月份', 
    sum(case when left(b.mon,1)='十一' then b.yj else 0 end) as '十一月份', 
    sum(case when left(b.mon,1)='十二' then b.yj else 0 end) as '十二月份' 
    from tb2 a  join tb1 b on a.dep=b.dep 
    group by a.dep/*------------
    dep        一月份         二月份         三月份         四月份         五月份         六月份         七月份         八月份         九月份         十月份         十一月份        十二月份
    ---------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
    01         10          0           0           0           0           0           0           0           0           0           0           0
    02         10          8           0           0           0           0           0           0           0           0           0           0
    03         5           0           8           0           0           0           0           0           0           0           0           0
    04         0           9           0           0           0           0           0           0           0           0           0           0
    -------*/