我想将一列的值按另一列分组求和。e.g
Month     Count
Jan         5
Jan         7
Feb         1
Feb         2我想要
Month     Count   Status
Jan         5       A
Jan         7       B
Jan        12      SUM
Feb         1       A
Feb         2       B
Feb         3      SUM发布于 2013-08-28 19:47:04
其中一种方法是使用rollup。但是,因为您需要原始数据,所以此方法通过rownum对汇总执行“假”聚合:
select Month, sum(Count),
       (case when rn is null then 'SUM' end) as status
from (select rownum as rn, t.*
      from t
     ) t
group by Month, rollup(rn)我不确定您在status列中提到的A和B是什么意思。
发布于 2013-08-28 19:48:17
原始表:
CREATE TABLE test
(
    month CHAR(3), 
    num INT,
    status CHAR(3)
);
INSERT INTO test (month, num, status) VALUES
    ('Jan', 5, 'A'),
    ('Jan', 7, 'B'),
    ('Feb', 1, 'A'),
    ('Feb', 2, 'B');查询:
SELECT month, sum(num) AS num, 'SUM' AS status
FROM test
GROUP BY month
UNION
SELECT month, num, status
FROM test
ORDER BY month DESC, status结果:
MONTH   NUM   STATUS
Jan     5     A
Jan     7     B
Jan     12    SUM
Feb     1     A
Feb     2     B
Feb     3     SUMHere是SQLfiddle。
发布于 2013-08-28 19:46:52
select month, sum(count) from table group by rollup(month, count);如果你想避免使用month is not null,它也会给出净合计。
https://stackoverflow.com/questions/18486704
复制相似问题