日期:2014-05-17 浏览次数:21012 次
SELECT DISTINCT tsk
,userid
,getfltbytsk(tsk) flt
,getpreparebegindate(tsk, userid) begindate
,getstdbytsk(tsk) stk
,getprepareflag(tsk, userid) prepareflag
,getpreparetime(tsk, userid) preparetime
FROM epare_crewschedule
WHERE (std BETWEEN to_date('2008-7-12', 'yyyy-MM-dd') AND
to_date('2008-7-12', 'yyyy-MM-dd') + 1)
AND deptid = '二大队'
AND to_date('2008-7-12', 'yyyy-mm-dd') <= getstdbytsk(tsk)
AND (to_date('2008-7-12', 'yyyy-mm-dd') + 1) >= getstdbytsk(tsk)
AND position < 50
AND getprepareflag(tsk, userid) = '0'
ORDER BY std
------解决方案--------------------
hebo2005已经说得很明白了,这些函数中的参数不是靠传递传进来的,而是你数据库表被便利的当前行中字段的值。
即使在where中也是一样的。
------解决方案--------------------
可不可以这么理解
数据库先执行from子句,找到需要的表(这时表里所有的列都有了)
然后执行where子句,对表中的记录进行筛选
然后执行select(当然不考虑你的distinct)