用sql语句进行数据的汇总(根据序号对总金额,其它数据也显示),将结果显示到另一个表里,最好能使用存储过程

比如,表1
序号 日期 总金额
111 12-1 100
111 12-1 120
112 12-2 110
112 12-2 130
结果,表2
序号 日期 总金额
111 12-1 220
112 12-2 240

sqlserver,access

select åºå·,日期,sum(总金额) as æ€»é‡‘额 into è¡¨2 from è¡¨1 group by åºå·,日期

oracle,mysql

create table è¡¨2 as select åºå·,日期,sum(总金额) as æ€»é‡‘额  from è¡¨1 group by åºå·,日期

都是一句话就能搞定啊

追问

日期不要分组啊,同一个序号的日期是相同的,你分组了以后我原来的顺序就被改变了.我只按照序号

追答

那你上边的数据不合适,比如这样的数据,你最后要怎么样?


序号  æ—¥æœŸ æ€»é‡‘额

111    12-1   100

111    12-1   120  

112    12-2   110

112    12-2   130

111    12-2   150

 

 

难道你是这个意思?

select åºå·,max(日期) as æ—¥æœŸ,sum(总金额) as æ€»é‡‘额 into è¡¨2 from è¡¨1 group by åºå·è¿½é—®

跟你说了,同一个序号的日期是相同的,因为序号是一个订单,日期是交易日期,我只取数据中相同的部分和 汇总金额

追答

那就用上边这个就行了

select åºå·,max(日期) as æ—¥æœŸ,sum(总金额) as æ€»é‡‘额 into è¡¨2 from è¡¨1 group by åºå·

只按序号汇总

追问

可是除了日期另外还有三十多个字段是相同的需要取出,难道每个都要用函数吗

追答

恩,对,用max或min都行,如果其他字段都是重复的,就显示出来了,如果其他字段有不一样的,会只显示某一个

追问

我靠,不觉得这样办法太麻烦了吗,难道你不觉得肯定会有简单点的.

追答

那你就一次性把这东西弄个视图出来,以后直接从视图里取数,不过你这个需求,换谁写都是这么麻烦

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-05
insert into 表3(序号,总金额) select 序号, sum(金额) from 表1 t1,表2 t2 where t1.序号 = t2.序号;

存储过程有点忘了,而且你这个问题也挺简单的,如果可以直接使用SQL比较方便。。追问

不是简单,我的数据表有37个字段,为了简化才举了上边的例子,表2是表1的结果,用的sql server,我只要每个序号取一条数据,取的是他们共同的部分,金额就是汇总起来

追答

create table 表2 as select 序号,sum(金额) from 表1 where 1=1;

第2个回答  2013-08-05
create proc 存储过程名称
AS
BEGIN

select 序号,日期,sum(总金额) as 总金额 into 表2 from 表1 group by 序号,日期

END
第3个回答  2013-08-05
insert 表2 (序号,日期,总金额)
value
(select 序号,日期,sum(总金额) from 表1 )
group by 序号,日期;
相似回答