求一存储过程,谢谢大侠了,急急!!!!!

Barry_leung 2010-08-11 12:04:48
有4个表如下:
T1:ship_code,descrtion
T2: custnum,custseq,ship_code,whse,shipto_mail
T3: Order,custnum,custseq,ship_code,shipto
T4: Order,Line,custnum,custseq,duedate,promisedate
其中duedate和promisedate 为datetime

1. 如果T4的custseq为空,将使用T3的custseq,,否则,使用T4的custseq,
2. T1中的ship_code有3种:sea,air,others
3. 如果ship_code=sea, 则自动更新duedate, duedate=promisedate+20天,并且如果duedate是在每月的15日或者之后,则需要再加30天时间
如果ship_code=air, 则自动更新duedate, duedate=promisedate+7天,并且如果duedate是在
每月的15日或者之后,则需要再加30天时间
如果ship_code=others, 则自动更新duedate, duedate=promisedate+2天,并且如果duedate是在每月的15日或者之后,则需要再加30天时间
注意:promisedate是已经输入了系统.
...全文
174 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Barry_leung 2010-08-22
  • 打赏
  • 举报
回复
还是没有人出来帮忙?失望啊
kitajima-- 2010-08-19
  • 打赏
  • 举报
回复
update T4 set duedate=
CASE WHEN T4.custnum is null then ship_code = t3.ship_code
when T4.custnum is not null then ship_code=(select ship_code from t4,t2 where t4.custnum=t2.custnum and t4.seq=t2.seq)
end.
CAST(ship_code AS varchar(20)) ='air' and day(dateadd(d,7,promisedate))>=15 then dateadd(d,37,promisedate)
CAST(ship_code AS varchar(20))='others' and day(dateadd(d,2,promisedate))>=15 then dateadd(d,32,promisedate)
WHERE T4.Order=T3.Order and T1.ship_code=T3.ship_code
//--注:在1#楼的基础上变动的,您看合适吗,不常写Procedure
请问1#楼,您回复的帖子带 颜色字体 是用什么工具回复的呢
Barry_leung 2010-08-19
  • 打赏
  • 举报
回复
重新整理了一下,
有4个表如下:
T1:ship_code,descrtion
T2: custnum,custseq,ship_code,whse,shipto_mail
T3: Order,custnum,custseq,ship_code,shipto
T4: Order,Line,custnum,custseq,duedate,promisedate
其中duedate和promisedate 为datetime

1.1 If T4.custnum是空,then ship_code=t3.ship_code
1.2 If T4.custnum不是空,then ship_code=(select ship_code from t4,t2
where t4.custnum=t2.custnum and t4.seq=t2.seq)

2.1 If ship_code=air, then Due_date=promise_date-7 ,大等于15日,则due_date为上月15日
2.2 If ship_code=sea, then Due_date=promise_date-42 ,大等于15日,则due_date为上月15日
2.3 If ship_code=others, then Due_date=promise_date-2 ,大等于15日,则due_date为上月15日
Barry_leung 2010-08-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 w87875252l 的回复:]
有点乱
[/Quote]

是有点乱,因为数据比较多,有邮箱可以单独发送给你,这样就直观了.
Barry_leung 2010-08-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 oraclers 的回复:]
引用 2 楼 barry_leung 的回复:
意思是在更新duedate时,优先考虑T3的custseq,然后再考虑T4的custseq,上面是的sql语句没有考虑这个条件.

按你说的更新DueDate好象与CustSeq没关系。
[/Quote]

当然有关系,因为关系Duedate是根据shipe_code计算,而在T4中没有该字段,是依据T4中的custseq和custnum才能确定ship_code.
Oraclers 2010-08-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 barry_leung 的回复:]
意思是在更新duedate时,优先考虑T3的custseq,然后再考虑T4的custseq,上面是的sql语句没有考虑这个条件.
[/Quote]
按你说的更新DueDate好象与CustSeq没关系。
w87875252l 2010-08-18
  • 打赏
  • 举报
回复
有点乱
duanzhi1984 2010-08-11
  • 打赏
  • 举报
回复

1.如果T4的custseq为空,将使用T3的custseq,,否则,使用T4的custseq??、不晓得什么意思

3.
update T4 set duedate=
CASE WHEN ship_code='sea' and day(dateadd(d,20,promisedate))>=15 then dateadd(d,50,promisedate)
WHEN ship_code='air' and day(dateadd(d,7,promisedate))>=15 then dateadd(d,37,promisedate)
WHEN ship_code='others' and day(dateadd(d,2,promisedate))>=15 then dateadd(d,32,promisedate)
else duedate end
from T4,T1,T3
WHERE T4.Order=T3.Order and T1.ship_code=T3.ship_code
Barry_leung 2010-08-11
  • 打赏
  • 举报
回复
意思是在更新duedate时,优先考虑T3的custseq,然后再考虑T4的custseq,上面是的sql语句没有考虑这个条件.

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧