Table1--------------------------------- a
部门dep      部门名称dname
--------------------------------
      01      国内业务一部
      02      国内业务二部
      03      国内业务三部
      04      国际业务部建表语句:
CREATE TABLE `table1` (
  `dep` varchar(50) DEFAULT NULL,
  `dname` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Table2---------------------------------b\c\d
月份mon    部门dep  业绩yj
-------------------------------
一月份       01        10
一月份       02        10
二月份       03        5
二月份       02       8
二月份       04       9
三月份
表二的建表语句:       03       8
CREATE TABLE `table2` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `mon` varchar(50) DEFAULT NULL,
  `dep` varchar(50) DEFAULT '',
  `yj` varchar(50) DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=777478 DEFAULT CHARSET=utf8;
查询后的结果是:
table3 (result)
部门dep     一月份    二月份     三月份
--------------------------------------
      01      10        null       null
      02      10         8        null
      03      null        5        8
      04      null        9        null
------------------------------------------
怎么写?

解决方案 »

  1.   

    行列转换:http://topic.csdn.net/u/20100109/13/6a10c168-f190-4766-b838-adbf03c4ac7b.html?64829
      

  2.   


    with tb as(
    select '一月份' mon,'01' dep,10 yj from dual union all
    select '一月份','02',10 from dual union all
    select '二月份','03',5 from dual union all
    select '二月份','02',8 from dual union all
    select '二月份','04',9 from dual)
    --以上为提供数据的语句
    select dep,max(decode(mon,'一月份',yj,null)) "一月份",
           max(decode(mon,'二月份',yj,null)) "二月份",
           max(decode(mon,'三月份',yj,null)) "三月份"
    from tb
    group by dep
    order by depDE     一月份     二月份     三月份
    -- ---------- ---------- ----------
    01         10
    02         10          8
    03                     5
    04                     9
      

  3.   


    create table BBB as 
    (
    select 'aaa' xm ,1 nd,2 dm from dual
    union all
    select 'aaa' xm ,2 nd,2 dm from dual
    union all
    select 'aaa' xm ,3 nd,2 dm from dual
    union all
    select 'bbb' xm ,4 nd,2 dm from dual
    union all
    select 'bbb' xm ,5 nd,2 dm from dual
    union all
    select 'bbb' xm ,6 nd,2 dm from dual);update BBB set dm=1 where (xm,nd) in (
    select XM,min(ND) from BBB group by XM);select * from BBB;
    drop table bbb;
      

  4.   

    SELECT 
    dep,
    MAX(DECODE(mon,'一月份',yj,NULL)) "一月份",
    MAX(DECODE(mon,'二月份',yj,NULL)) "二月份",
    MAX(DECODE(mon,'三月份',yj,NULL)) "三月份"
    FROM table2
    GROUP BY dep
    ORDER BY dep; 
      

  5.   

    ...各位 mysql 也可以这么搞么?...decode函数不能再mysql中用...SELECT a.dep,
    max(CASE WHEN mon='一月份' THEN yj END) AS 一月份,
    max(CASE WHEN mon='二月份' THEN yj END) AS 二月份,
    max(CASE WHEN mon='三月份' THEN yj END) AS 三月份
    FROM table1 a LEFT JOIN table2 b 
    ON a.dep=b.dep 
    GROUP BY a.dep