首页 新闻 会员 周边

sql 语句

0
悬赏园豆:50 [已解决问题] 解决于 2010-05-05 17:26

一张实际情况表ProjectProgress

有开始时间BeginDate 结束时间 EndDate

我现在求结束时间条件是 :把最大的结束时间max(EndDate)求出来,但需要判断如果EndDate为一行空给这行付当前时间计算

select  max(EndDate)  from ProjectProgress

谢谢各位了

yangyueming的主页 yangyueming | 初学一级 | 园豆:2
提问于:2010-04-26 09:13
< >
分享
最佳答案
0

select  max(ISNULL(EndDate,Getdate()))  from ProjectProgress

收获园豆:50
无凯 | 菜鸟二级 |园豆:275 | 2010-04-26 09:59
好了谢了哥们!
yangyueming | 园豆:2 (初学一级) | 2010-04-26 10:03
@yangyueming:那个正确哦,被你搞蒙了。
无凯 | 园豆:275 (菜鸟二级) | 2010-04-26 10:05
其他回答(3)
0

select  isnull(max(EndDate),getdate())  from ProjectProgress 是这样吗。

清海扬波 | 园豆:825 (小虾三级) | 2010-04-26 09:16
不对 我现在是要如果EndDate为null的时候他没有按当前时间来计算啊我刚试了
支持(0) 反对(0) yangyueming | 园豆:2 (初学一级) | 2010-04-26 09:22
这个是如果enddate为null取当前时间,这个肯定是没问题的,没有按照当前时间计算应该是你其他地方的问题吧,建议你把数据贴出来,把需要的结果贴出来,这样就比较清楚了。
支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2010-04-26 09:25
@清海扬波:create table ProjectProgress ( ActivityCode nvarchar(100) null, BeginDate datetime null, EndDate datetime null, WorkingDays decimal null, Progress nvarchar(10) null, Description nvarchar(300) null, Responsible nvarchar(50) null )
支持(0) 反对(0) yangyueming | 园豆:2 (初学一级) | 2010-04-26 09:31
这是表结构我刚很简单有的EndDate为null有的不为null
支持(0) 反对(0) yangyueming | 园豆:2 (初学一级) | 2010-04-26 09:33
@yangyueming:如果有不为null的,那么max(enddate)肯定就不为null了,那么就取不到当前时间了。 declare @t table(t datetime) insert @t select '2009-01-02' union all select null select max(t) from @t 测试看看就明白了。
支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2010-04-26 09:35
@清海扬波:是的我现在根据这条语句得出的结果肯定是不对的 如果让EndDate 的时间现在都在2009年这个时间段, 然后给他一个null那么最大时间就应该是当前时间,但现在结果还是2009年这个阶段有的最大值,并不是当前时间
支持(0) 反对(0) yangyueming | 园豆:2 (初学一级) | 2010-04-26 09:48
@yangyueming:那二楼这个方法应该就是你要的了。
支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2010-04-26 09:49
0

select max(EndDate) from (

  select isnull(EndDate, getdate()) from ProjectProgress

)

Gray Zhang | 园豆:17610 (专家六级) | 2010-04-26 09:43
这个方法不错。或者表设计默认值为getdate(),且不能为null比较好,不要在后面再取人工处理了。
支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2010-04-26 09:48
@清海扬波: 在我这这条语句报错 Msg 102, Level 15, State 1, Line 3 ')' 附近有语法错误。
支持(0) 反对(0) yangyueming | 园豆:2 (初学一级) | 2010-04-26 09:52
@yangyueming: select max(EndDate) from ( select isnull(EndDate, getdate()) from ProjectProgress )a
支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2010-04-26 09:54
@清海扬波: 还是报错啊。 Msg 8155, Level 16, State 2, Line 1 没有为 'a' 的列 1 指定任何列。 Msg 207, Level 16, State 1, Line 1 列名 'EndDate' 无效。
支持(0) 反对(0) yangyueming | 园豆:2 (初学一级) | 2010-04-26 09:58
@yangyueming: 好了解决了谢谢了 辛苦了哥们 select max(ISNULL(EndDate,Getdate())) from ProjectProgress
支持(0) 反对(0) yangyueming | 园豆:2 (初学一级) | 2010-04-26 10:02
0

select max(t.temp) from (select isnull(EndDate, getdate()) as temp from ProjectProgress) T

邢少 | 园豆:10926 (专家六级) | 2010-04-26 14:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册