急!急!急!急!一个错误!
我用下面的语句:
select ModelNo,count(ProductId) as sumLot,sum(DATEDIFF(hour,GmtDate,PackDate)),
isnull(sum(DATEDIFF(hour,GmtDate,PackDate)) as sumtime,0)/count(ProductId) as averTime from producth
where (lotFinish=1) and modelno='nl859844' and (packdate>='20041001') and (packdate<='20041030') group by ModelNo order by ModelNo
会得到结果:
ModelNo sumlot sumtime avertime
NL859844 457 -1498 -3
是不是象别的语言一样发生了益处错无,怎样才能得到正确的值!
问题点数:20、回复次数:5Top
1 楼jackluo1981(无知者无畏)回复于 2004-12-06 09:09:21 得分 0
怎么没人?Top
2 楼jackluo1981(无知者无畏)回复于 2004-12-06 12:47:12 得分 0
没人知道吗?Top
3 楼nicepp()回复于 2004-12-06 13:32:11 得分 20
不是发生益出,有可能是:在有些记录中GmtDate值大于PackDate值,则DATEDIFF(hour,GmtDate,PackDate)返回负值,从而sum(DATEDIFF(hour,GmtDate,PackDate) 也是负值,去查下你的各条记录中GmtDate值和 PackDate值。Top
4 楼jackluo1981(无知者无畏)回复于 2004-12-06 13:46:06 得分 0
不是啦,我吧条件改成(packdate>='20041001') and (packdate<='20041015')就不会出现负值,而且我用DATEDIFF(hour,GmtDate,PackDate)返回每条的值时就没有负值,但相加时就会出现负值。搞不清为什么?Top
5 楼nicepp()回复于 2004-12-06 15:01:20 得分 0
不会吧,我想如果DATEDIFF(hour,GmtDate,PackDate)发生益出,在SQLSERVER查询分析器中是会出错的,无法执行。那你可以试试把条件改成(packdate>='20041015') and (packdate<='20041030')看是不是出现负值,如出现的话,再看在这个范围里DATEDIFF(hour,GmtDate,PackDate)返回的值Top




