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

请高手们看看这个统计怎样做.谢谢。

楼主zc_king(惊)2003-01-03 20:41:57 在 MS-SQL Server / 基础类 提问

 
  @idate   =   '2002-07-01'  
  @id   =   1000  
   
  id           s_date             e_date             mny  
  1000     1995-06-01     2000-07-01     600.00  
  1000     2000-08-01     2000-12-31     700.00  
  1000     2002-07-01     2002-12-31     800.00  
  1001     1995-06-01     2000-07-01     500.00  
   
  要求是  
  1.合计@idate之前datediff(mm,s_date,e_date)和mny  
  2.@idate之后的datediff(mm,s_date,e_date)和mnyy  
  3.如果没有   =   idate的记录,mny等于最大的s_date的mny  
   
  能否用一过程完成?请各位高手多多帮忙指点。谢谢。  
   
   
   
   
   
  问题点数:100、回复次数:7Top

1 楼Chiff(~o~)回复于 2003-01-03 22:23:41 得分 20

declare   @idate   datetime  
  declare   @id   int  
   
  set   @idate   =   '2002-07-01'  
  set   @id   =   1000  
   
  select   case   when   s_date   <=   @idate   then   '前'   else   '后'   end,  
                sum(datediff(mm,s_date,e_date)),  
                sum(mny)  
  from   #t  
  where   id   =   @id  
  group   by   case   when   s_date   <=   @idate   then   '前'   else   '后'   endTop

2 楼zc_king(惊)回复于 2003-01-03 22:29:47 得分 0

谢谢,正在测试中......  
  等一下结贴。Top

3 楼zc_king(惊)回复于 2003-01-03 23:22:33 得分 0

好像不行,我需要返回以下4个值  
  declare   @b_month   int        
  declare   @a_month   int  
  declare   @sum_mny   money  
  declare   @now_mny   money  
   
  如要求返回以下  
  1.     @b_month   =   datediff(mm,1995-06-01,2000-07-01)   +    
                                datediff(mm,2000-08-01,2000-12-31)  
          @sum_mny   =   600+700  
  2.     @a_month   =   datediff(mm,2002-07-01,2002-12-31)  
  3.     if   有[   1000     2002-07-01     2002-12-31     800.00   ]这条记录   then  
              @now_mny   =   800  
          else  
              @now_mny   =   700  
   
  万分感谢!  
  Top

4 楼noblame(不嗔)回复于 2003-01-04 10:55:57 得分 80

--The   table   name   is   xxx  
  declare   @b_month   int        
  declare   @a_month   int  
  declare   @sum_mnyb   money   --@idate前的mny合计  
  declare   @sum_mnya   money   --@idate后的mny合计  
  declare   @now_mny   money  
  declare   @idate   datetime  
  declare   @id   int  
  select   @id=1000  
  select   @idate   =   '2002-07-01'  
   
  if   exists(select   1   from   xxx   where   s_date=@idate)  
      begin  
  select   @b_month=sum(datediff(mm,s_date,e_date)),@sum_mnyb=sum(mny)  
    from   xxx   where     s_date<@idate   and   id=@id  
  select   @a_month   =sum(datediff(mm,s_date,e_date)),@sum_mnya=sum(mny)  
    from   xxx   where   s_date>=@idate   and   id=@id  
  select   @now_mny=mny   from   xxx   where   s_date=@idate  
      end  
  else  
      select   @now_mny=mny   from   xxx   where   s_date=(select   max(s_date)   from   xxx)  
   
  完全可以写到一个过程中,自己根据实际情况加以变化和修改Top

5 楼ToUpdate(老六)回复于 2003-01-04 12:59:37 得分 0

UPTop

6 楼happydreamer(www.sz.js.cn,www.gyxk.com)回复于 2003-01-04 23:50:21 得分 0

今天晚了,明天帮你想想Top

7 楼zc_king(惊)回复于 2003-01-05 00:21:08 得分 0

十分多谢各位的热心帮忙,因为明天考试今晚未能测试结贴,万分抱歉。Top

相关问题

  • 请问。有两个表。怎样统计,
  • 请问怎样在网页上实现统计分析图表?
  • [请问]怎样统计网站点击率
  • 统计报表时,怎样提高Sql统计的速度——【高手请指教一下】
  • 统计报表时,怎样提高Sql统计的速度——【高手请指教一下】
  • 关于怎样统计
  • 请教:请问怎样统计一个字符串包含的字节数?
  • 求助:用JSP实现统计来访人数,请问怎样实现?
  • 怎样查找统计相同名称的金额值,请帮我,谢谢。
  • 请问怎样按照每月的指定日期进行统计

关键词

  • date
  • mny
  • idate
  • from xxx
  • select

得分解答快速导航

  • 帖主:zc_king
  • Chiff
  • noblame

相关链接

  • SQL Server类图书

广告也精彩

反馈

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