请高手们看看这个统计怎样做.谢谢。
@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




