以下查询
SELECT pdate,empno, eNAME,
workhrs,mealpanelty
from PRODUCTIVITY p,PRODUCTIVITYd d, emp e
where p.PRODUCTIVITYID=d.PRODUCTIVITYID and e.empno=p.employeeid
作为
的效果很好PDATE EMPNO ENAME WORKHRS MEALPANELTY
03/08/2016 7698 BLAKE 50 4
03/08/2016 7698 BLAKE 7.58 -
03/08/2016 7698 BLAKE 8.12 -
03/08/2016 7698 BLAKE 7.34 -
03/08/2016 7698 BLAKE 8.02 -
PIVOT 查询
WITH pivot_data AS (
SELECT pdate,empno, eNAME,
workhrs,mealpanelty
from PRODUCTIVITY p,PRODUCTIVITYd d, emp e
where p.PRODUCTIVITYID=d.PRODUCTIVITYID and e.empno=p.employeeid
)
SELECT *
FROM pivot_data
PIVOT (
max(workhrs) --<-- pivot_clause
FOR pdate --<-- pivot_for_clause
IN ('03/08/2016') --<-- pivot_in_clause
)
结果只有两行
EMPNO ENAME MEALPANELTY '03/08/2016'
7698 BLAKE - 8.12
7698 BLAKE 4 50
可能是什么问题?
答案 0 :(得分:-1)
Pivot做这样的事情。
with pivot_data (PDATE, EMPNO, ENAME, WORKHRS, MEALPANELTY) as
(
select '03/08/2016','7698','BLAKE',50,4 from dual union all
select '03/08/2016','7698','BLAKE',7.58,null from dual union all
select '03/08/2016','7698','BLAKE',8.12,null from dual union all
select '03/08/2016','7698','BLAKE',7.34,null from dual union all
select '03/08/2016','7698','BLAKE',8.02,null from dual)
select EMPNO,ENAME,MEALPANELTY
,case when PDATE ='03/08/2016' then max(WORKHRS)end --list of value from in( IN ('03/08/2016') )
from pivot_data
group by PDATE,EMPNO,ENAME,MEALPANELTY;
尝试在表格中添加唯一列。