表中内容汇总更新的问题 SQL

来源:百度知道 编辑:UC知道 时间:2024/07/03 12:12:14
关于SQL更新追加汇总的问题!有解否?

请教各位大仙!我有一问题百思不得其解:
两个表,一是交易明细表,其中字段为

客户号 产品 日期 金额 导出
1 1 2008-10-1 1 (Y/N)
1 1 2008-10-2 2 (Y/N)
1 2 2008-10-3 5 (Y/N)
2 1 2008-10-1 10 (Y/N)
2 1 2008-11-1 20 (Y/N)

按整月导出到另一张表票据基础表中,用于总额开票确认,要求是将客户、产品、月份、金额同类合并,并在明细表中导出加true标识
结果应如下:
客户号 产品 日期 金额
1 1 2008-10 3
1 2 2008-10 5
2 1 2008-10 10
2 1 2008-11 20

我现在写的SQL语句是
update F票据基础表
set 金额 = F交易表.金额
from (select 客户号, 交易日期, sum(金额)as 金额 from F交易表 group by 客户号, 交易日期)AS F交易表 , F票据基础表
where F交易表.客户号 = F票据基础表.客户号
请大仙帮修改一下,不要伤了初学者的心啊!

如果说明您的F票据基础表,是与交易表同步生成的,或者说,基础表中行数不少于交易表中对应的客户,产品和月份的分组数,则用您的方法就可以,便后面要加入两个条件,如下:

update F票据基础表
set 金额 = F交易表.金额
from (select 客户号, 交易日期, sum(金额)as 金额 from F交易表 group by 客户号, 产品,left(交易日期,7))AS F交易表 , F票据基础表
where F交易表.客户号 = F票据基础表.客户号 AND F交易表.产品 = F票据基础表.产品 and left(F交易表.日期,7) = F票据基础表.日期
update F交易表 set 导出=1

==============
但不知道您的F票据基础表中是什么样的数据,
看您的语句和结果,似乎并没有使用F票据基础表中的数据,所以,
我想还不如不用其中的记录,删除相关记录后,直接将查询出结果插入这个表中:
DELETE F票据基础表 from F交易表 where 客户号 in (select 客户号 from F交易表)
insert into F票据基础表 select 客户号, 交易日期, sum(金额)as 金额 from F交易表 group by 客户号, 产品,left(交易日期,7)
update F交易表 set 导出=1
====================================
由于对您的字段类型不了解,所以语句具体您可能还需要根据类型作一定的修改