日期:2014-05-17  浏览次数:20827 次

查询语句同时显示明细与合计
比方说有一组数据
产品编号 数量 拥有者
1 10 A
1 10 B
1 10 C
2 5 A
2 5 B

select后的效果是
产品编号 数量 拥有者
1 10 A
1 10 B
1 10 C
  30
2 5 A
2 5 B
  10

不要用union那种
我只有这么点分数了


------解决方案--------------------
SQL code

CREATE TABLE T(A INT, B INT, C VARCHAR2(4));
INSERT INTO T VALUES (1, 10, 'A');
INSERT INTO T VALUES (1, 10, 'B');
INSERT INTO T VALUES (1, 10, 'C');
INSERT INTO T VALUES (2, 5, 'A');
INSERT INTO T VALUES (2, 5, 'B');

SELECT DECODE(GROUPING(A), 1, NULL, B) A,
       DECODE(GROUPING(B), 1, SUM(B), B) B,
       C
  FROM T
 GROUP BY ROLLUP(A, (B, C))
 HAVING GROUPING_id(a,B)<>3 
 ;
返回:

10    10    A
10    10    B
10    10    C
    30    
5    5    A
5    5    B
    10