免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: tigerfish
打印 上一主题 下一主题

一个根据时间分组求和的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-04-18 21:14 |只看该作者
不是的,訂單號是唯一的,但是一個項目編號可以有多個訂單號,但是每個的交期是不同的,為甚麼緊急度是-1 ,是因為交期要提前,就是這個意思

论坛徽章:
0
12 [报告]
发表于 2005-04-18 21:29 |只看该作者
统计2005/05/06之前合计的时候,是不是不管那个订单、项目编号,而只是按交期汇总?

就是说把2005/05/06之前的所有计划数量求出一个合计就行了?

论坛徽章:
0
13 [报告]
发表于 2005-04-18 21:33 |只看该作者
不是的,肯定是項目編碼要相同阿,然後在根據緊急度為-1的話就是變跟的數量,在它之前的計劃數量相加,你看我的第一張帖子.就是那個意思

论坛徽章:
0
14 [报告]
发表于 2005-04-18 22:09 |只看该作者
先传表和数据脚本,表的脚本中字段名和数据类型和你不一致的地方自己修改一下

create table xdenp
(订单 nvarchar(,
项目编号 nvarchar(6),
计划数量 float,
变化后的数量 float,
交期 nvarchar(10),
紧急度 int
)

insert into xdenp
values(\'M05-0968\' ,\'D32052\', -32000 ,38000, \'2005/05/06\', -1)
insert into xdenp
values(\'M05-0958\', \'D32052\', 19000, 19000, \'2005/04/28\', 1)
insert into xdenp
values(\'M05-0936\', \'D32052\', 2000 ,1000, \'2005/04/30\', 1)
insert into xdenp
values(\'M05-0935\', \'D32052\' ,11000, 11000, \'2005/05/04\', 1)
insert into xdenp
values(\'M05-0203\', \'D32052\', -54000, 20000, \'2005/05/19\' ,-1)
insert into xdenp
values(\'M05-0205\', \'D32052\', 3000, 2000, \'2005/05/11\', 1)
insert into xdenp
values(\'M05-0206\', \'D32052\', 41000, 41000, \'2005/05/12\', 1)
insert into xdenp
values(\'M05-0208\', \'D32052\', 10000, 10000, \'2005/05/18\', 1)
insert into xdenp
values(\'M05-0305\', \'D32052\', -25000, 11000, \'2005/05/25\', -1)
insert into xdenp
values(\'M05-0306\', \'D32052\', 3000, 3000,\'2005/05/21\', 1)
insert into xdenp
values(\'M05-0307\', \'D32052\', 28000, 28000, \'2005/05/23\', 1)

论坛徽章:
0
15 [报告]
发表于 2005-04-18 22:12 |只看该作者
下面的是一个查询脚本,实际是一个sp,里面通过游标按项目、交期进行了汇总
btw:字段名和类型需做相应修改


create proc test_sp
as
declare        @交期 nvarchar(10),
        @项目编号 nvarchar(6),
        @计划数量 float,
        @s_交期 nvarchar(10)--上一个交期
       
create table #temp(交期 nvarchar(10),项目编号 nvarchar(6),total float)



declare temp1 cursor for
select  交期,项目编号,计划数量
from xdenp
where 紧急度=-1

open temp1

while(1=1)
begin
        fetch temp1 into @交期,@项目编号,@计划数量

        if @@fetch_status<>0 break

       
        select @s_交期=max(交期)
          from #temp
         where 项目编号=@项目编号
       
        if @s_交期 is null
                set @s_交期=\'\'


        insert into #temp
        select @交期,@项目编号,sum(计划数量)+@计划数量
          from xdenp
         where 交期 > @s_交期 and 交期< @交期 and
                项目编号=@项目编号


       
       
end
CLOSE temp1
DEALLOCATE temp1
select *from #temp

go

exec test_sp


以上代码我已经过测试,直接执行就可以了

论坛徽章:
0
16 [报告]
发表于 2005-04-19 08:10 |只看该作者
非常感謝,我先消化一下你的代碼,謝謝了

论坛徽章:
0
17 [报告]
发表于 2005-04-19 09:09 |只看该作者
我剛剛測了一下,好像還有點小問題,
1)如果它沒有緊急度為-1的則顯示不出來
2)如果兩個-1中沒有數量的話則顯示的是null

论坛徽章:
0
18 [报告]
发表于 2005-04-19 09:23 |只看该作者
1、没弄懂
2、select @交期,@项目编号,isnull(sum(计划数量),0)+@计划数量

论坛徽章:
0
19 [报告]
发表于 2005-04-19 09:54 |只看该作者
就是說你的這個存儲程序中顯示數據的前提條件是緊急度為-1,但是有的緊急度為1的項目編號,它沒有緊急度為-1的話,就顯示不出來了,被過濾掉了,

论坛徽章:
0
20 [报告]
发表于 2005-04-19 10:24 |只看该作者
緊急度為1的項目編號,它沒有緊急度為-1的話,要怎么显示?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP