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

关于分组合计的问题
现在有表A其中有4个字段   x1(CHAR)   x2(NUMBER)   x3(CHAR)   note(CHAR)

现在的数据为:
x1                         x2                             x3                                     note
-----------------------------
00001                 40                               00003                             备注12
00002                 50                               00002                             备注13
00003                 60                               00004                             备注14
00001                 70                               00002                             备注15
00002                 30                               00032                             备注16

现在要求输出内容为
x1   sum(x2)   note
其中note为x1里面x3数值最小的纪录。

比如上边数据应该输出
x1                     sum(x2)                     note
------------------------
00001                 110                         备注15
00002                 80                           备注13
00003                 60                           备注14



------解决方案--------------------
select t2.x1,t2.sumX2 ,t1.note
from
(
SELECT x1, note
FROM a
WHERE x2 IN (SELECT MIN (x2)
FROM a)
) t1
(
SELECT x1, SUM (x2) sumX2
FROM a
GROUP BY x1) t2

where t1.x1 = t2.x1
------解决方案--------------------
--测试数据
create table a (x1 CHAR(10),x2 NUMBER, x3 CHAR(10), note CHAR(10));

insert into a
select '00001 ',40, '00003 ', '备注12 ' from dual union all
select '00002 ',50, '00002 ', '备注13 ' from dual union all
select '00003 ',60, '00004 ', '备注14 ' from dual union all
select '00001 ',70, '00002 ', '备注15 ' from dual union all