SELECT NVL(hire_date,'Total'), count(hire_date)
FROM Employees GROUP BY rollup(hire_date);
如果您需要PIVOT数据,请参阅A_M的答案。如果你有多年的你有没有数据,但仍希望今年有一个零计数,你可以这样做以下显示:
SELECT NVL(a.Year,b.Year), NVL2(a.Year,a.Count,0) FROM
(
SELECT NVL(hire_date,'Total') Year, count(hire_date) Count
FROM Employees GROUP BY rollup(hire_date)
) a
FULL JOIN
(
SELECT to_char(2000 + rownum,'FM0000') Year FROM dual CONNECT BY rownum<=9
) b ON a.Year = b.Year;
下面是一些测试数据。
create table Employees (hire_date Varchar2(4));
insert into Employees values ('2005');
insert into Employees values ('2004');
insert into Employees values ('2006');
insert into Employees values ('2009');
insert into Employees values ('2009');
insert into Employees values ('2005');
insert into Employees values ('2004');
insert into Employees values ('2006');
insert into Employees values ('2006');
insert into Employees values ('2006');
练习是否说结果看起来应该是这样或者是您对“1995年,1996年雇用了多少雇员......”的解释? I.E.每年能有一排还是每年需要排成一排? – 2010-11-17 13:09:28
为什么版本? 11g +支持ANSI PIVOT/UNPIVOT语法。 – 2010-11-17 18:19:58