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
------------------------------------------
怎么写?
部门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
------------------------------------------
怎么写?
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
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;
dep,
MAX(DECODE(mon,'一月份',yj,NULL)) "一月份",
MAX(DECODE(mon,'二月份',yj,NULL)) "二月份",
MAX(DECODE(mon,'三月份',yj,NULL)) "三月份"
FROM table2
GROUP BY dep
ORDER BY 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