有数据表Table,有字段 Debt(部门)、Duty(职务,值为高工、工程师、助工之一),表中有如下数据:
Debt(部门) Duty(职务)
设计室1 高工
设计室2 助工
设计室2 高工
设计室1 工程师 用下列语句:
select Debt,count(*),count(decode(Duty,'高工',1,null)),
count(decode(Duty,'工程师',1,null)),
count(decode(Duty,'助工',1,null)) from table
group by debt
已经正确得到结果集:
部门 合计 高工 工程师 助工
设计室1 2 1 1 0
设计室2 2 1 0 1 现在希望修改select语句,在结果集最前面增加一条合计记录,即结果集是:
部门 合计 高工 工程师 助工
合计 4 2 1 1
设计室1 2 1 1 0
设计室2 2 1 0 1 SQL语句是怎样的?
Debt(部门) Duty(职务)
设计室1 高工
设计室2 助工
设计室2 高工
设计室1 工程师 用下列语句:
select Debt,count(*),count(decode(Duty,'高工',1,null)),
count(decode(Duty,'工程师',1,null)),
count(decode(Duty,'助工',1,null)) from table
group by debt
已经正确得到结果集:
部门 合计 高工 工程师 助工
设计室1 2 1 1 0
设计室2 2 1 0 1 现在希望修改select语句,在结果集最前面增加一条合计记录,即结果集是:
部门 合计 高工 工程师 助工
合计 4 2 1 1
设计室1 2 1 1 0
设计室2 2 1 0 1 SQL语句是怎样的?
FROM TABLE
GROUP BY ROLLUP(DEBT)
ORDER BY DUTY DESC
/
如果对排序有要求,楼上的可能要修改一下,因为DEBT的名字不一定能让'合计'排在前面
SELECT NVL(DEBT, '合计') AS DEBT, COUNT(DUTY) AS DUTY,
FROM TABLE
GROUP BY ROLLUP(DEBT)
ORDER BY NVL(DEBT, '0000') DESC
这样的话合计应该能在最后了