CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

数据汇总的难题

楼主softvivi(softvivi)2001-12-01 20:44:16 在 MS-SQL Server / 基础类 提问

结构如下:  
  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

相关问题

  • 数据汇总,急救啊
  • 数据库难题!
  • 数据库难题!!!!
  • 数据库难题!
  • 数据库难题
  • 数据库难题
  • 数据库难题
  • 汇总数据问题!谢谢
  • 关于数据汇总的问题~~~
  • ADO 数据集动态统计汇总

关键词

  • 发票
  • fprq
  • fpjs
  • khdl
  • fphm
  • ddxhdxx
  • yqzb
  • gjs
  • 号码
  • twhere t

得分解答快速导航

  • 帖主:softvivi
  • Haiwer

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo