用一个sql语句得出结果 
从table1,table2中取出如table3所列格式数据,注意提供的数据及结果不准确,只是作为一个格式向大家请教。 
如使用存储过程也可以。 
able1 
月份mon   部门dep   业绩yj 
--------------------------------- 
一月份      01      10 
一月份      02      10 
一月份      03      5 
二月份      02      8 
二月份      04      9 
三月份      03      8 --table2 
--部门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 b.dep,
    max(case when a.mon='一月份' then yj end) as [一月份],
    max(case when a.mon='二月份' then yj end) as [二月份],
    max(case when a.mon='三月份' then yj end) as [三月份]
    from table2 b left join table1 a on a.dep=b.dep
    group by b.dep
      

  2.   

    --> 测试数据:@tb1
    declare @tb1 table([月份mon] varchar(6),[部门dep] varchar(2),[业绩yj] int)
    insert @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--> 测试数据:@tb2
    declare @tb2 table([部门dep] varchar(2),[部门名称dname] varchar(12))
    insert @tb2
    select '01','国内业务一部' union all
    select '02','国内业务二部' union all
    select '03','国内业务三部' union all
    select '04','国际业务四部'select B.部门名称dname,
    sum(CASE A.月份mon WHEN '一月份' THEN 业绩yj ELSE 0 END) AS  一月份, 
    sum(CASE A.月份mon WHEN '二月份' THEN 业绩yj ELSE 0 END) AS  二月份,
    sum(CASE A.月份mon WHEN '三月份' THEN 业绩yj ELSE 0 END) AS  三月份 
    from @tb1 A,@tb2 B WHERE  A.部门dep = B.部门dep
    group by B.部门名称dname
      

  3.   


    --创建临时表
    IF OBJECT_ID('tempdb..#temp1') IS NOT NULL 
    DROP TABLE #temp1
    GOCREATE TABLE #temp1
    (
    mon nvarchar(12),
    depID nvarchar(4),
    yi int
    )IF OBJECT_ID('tempdb..#temp2') IS NOT NULL 
    DROP TABLE #temp2
    GOCREATE TABLE #temp2
    (
    depID nvarchar(4),
    dname nvarchar(30)
    )--测试数据
    INSERT INTO #temp1
    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 INSERT INTO #temp2
    SELECT '01','国内业务一部' UNION ALL
    SELECT '02','国内业务二部' UNION ALL
    SELECT '03','国内业务三部' UNION ALL
    SELECT '04','国际业务四部' --查询语句
    SELECT A.DEPID,
    SUM(CASE WHEN B.mon='一月份' THEN YI END) AS 一月份,
    SUM(CASE WHEN B.mon='二月份' THEN YI END) AS 二月份,
    SUM(CASE WHEN B.mon='三月份' THEN YI END) AS 三月份
    FROM #temp2 A LEFT JOIN #TEMP1 B 
    ON A.DEPID=B.DEPID
    GROUP BY A.DEPID