数据汇总的难题
结构如下:
id 月份 发票号码 金额
1 1 11 10
2 2 22 40
3 2 22 40
4 3 33 33
出现重复的发票号码是因为本张发票有两项产品,后面的金额是本张发票的总金额
现在要按月份汇总金额,sql怎么写?
如何选出发票号不同的记录再进行汇总??
问题点数:20、回复次数:7Top
1 楼Haiwer(海阔天空)回复于 2001-12-01 21:07:45 得分 0
select b.月份,sum(b.金额) as 金额
from TableName b,(
select 月份,发票号码,min(id) as id from TableName group by 月份,发票号码
) t
where t.id=b.id
group by b.月份
order by b.月份
Top
2 楼softvivi(softvivi)回复于 2001-12-01 21:34:05 得分 0
老大,改不对阿,帮我看看这个怎么改?gjs,fpjs,khdl,yqzb均于金额性质一样
感谢!!!!!
select month(fprq),sum(cast(fpjs as numeric(10,2))),sum(cast(gjs as numeric(9,3))),sum(cast(khdl as numeric(9,3))),sum(cast(yqzb as numeric(9,3)))
from ddxhdxx where
left(fprq,4)=@nd and dwdm like @dwdm group by month(fprq)
order by month(fprq) desc
Top
3 楼Haiwer(海阔天空)回复于 2001-12-01 21:45:37 得分 0
看不懂你的新问题,没有了发票号码???
Top
4 楼softvivi(softvivi)回复于 2001-12-01 21:53:33 得分 0
不需要发票号码
这个语句是不考虑一张发票存在多项产品时的情况
如果一张发票存在多个产品(多条纪录有相同的发票号码fphm),那么fpjs(整张发票价税)、gjs(整张发票的提货重量)、khdl(客户带料)、yqzb(用去数量)就存在重复累加的问题,因为这些字段每项纪录都一样(同个发票号码),都是整张发票的值,
那么怎么解决重复计算的问题?Top
5 楼Haiwer(海阔天空)回复于 2001-12-01 22:15:07 得分 20
那样就需要用发票号码来计算了:
第一个回复你试过没有:
select month(b.fprq),sum(b.fpjs) as fpjs,sum(b.gjs) as gjs,sum(b.khdl) as khdl,sum(b.yqzb) as yqzb
from ddxhdxx b,(select fphm,min(id) as id from ddxhdxx group by fphm) t
where t.id=b.id
group by month(b.fprq)
order by month(b.fprq)
Top
6 楼softvivi(softvivi)回复于 2001-12-01 22:36:26 得分 0
感谢!我加了点东西(查询条件),你看对不对发票号码〉4位且日期左4位等于年度,且指定单位代码。。。
select month(b.fprq),sum(cast(b.fpjs as numeric(10,2))) as fpjs,sum(cast(b.gjs as numeric(9,3))) as gjs,sum(cast(b.khdl as numeric(9,3))) as khdl,sum(cast(b.yqzb as numeric(9,3))) as yqzb
from ddxhdxx b,(select fphm,min(id) as id from ddxhdxx group by fphm) t
where t.id=b.id and len(b.fphm)>4 and left(b.fprq,4)=@nd and b.dwdm like @dwdm
group by month(b.fprq)
order by month(b.fprq)Top
7 楼hssfox()回复于 2001-12-02 13:01:08 得分 0
学习 Top




