【发布时间】:2016-02-19 22:31:15
【问题描述】:
需要您的帮助来构建一个 Oracle SQL 查询,以捕获给定月份的非工作时间以获取行程列表。
传递的值将是开始日期和结束日期
例如:
Feb has totally 696 hrs
Start Date End Date
S2 - 02-Feb-16 14:00 - 06-Feb-16 20:00 - 102hrs
S1 - 01-Feb-16 04:00 - 02-Feb-16 10:00 - 30hrs
Total Worked hrs - 132 hrs
The query result expected is 564 hrs
尝试的查询:
SELECT (a)
FROM (
SELECT COUNT( (SELECT DISTINCT 'O'
FROM TRIP s,
TRUCK p
WHERE s.TRUCKID = p.TRUCKID
AND p.NOTES2='ABC'
AND p.TRUCKID='553'
AND ( to_date(d,'DD-Mon-YYYY HH24')
NOT BETWEEN to_date(s.STIME,'DD-Mon-YYYY HH24')
AND to_date(s.ETIME,'DD-Mon-YYYY HH24')
)
) ) a
FROM (
SELECT (TRUNC(to_date(sysdate,'DD-MON-YYYY'),'MM') + level - 1) d
FROM dual
CONNECT BY level <= TO_CHAR(LAST_DAY(to_date(sysdate,'DD-MON-YYYY')),'DD')
)
)
【问题讨论】:
-
我尝试了类似的方法,但无法转换为小时。 SELECT (a) FROM (SELECT COUNT((SELECT DISTINCT 'O' FROM TRIP s,TRUCK p WHERE s.TRUCKID=p.TRUCKID AND p.NOTES2='ABC' AND p.TRUCKID='553' AND (to_date(d ,'DD-Mon-YYYY HH24') NOT BETWEEN to_date(s.STIME,'DD-Mon-YYYY HH24') AND to_date(s.ETIME,'DD-Mon-YYYY HH24')))) a FROM (SELECT (TRUNC(to_date(sysdate,'DD-MON-YYYY'),'MM') + level - 1) d FROM dual CONNECT BY level
-
发表你迄今为止的最大努力,并解释你到底在哪里卡住了。
-
将您的代码(使用edit)放入您的问题中。
-
我尝试了类似下面的方法,但挑战无法以小时为单位获取值,以下查询检索天数代码:SELECT (a) FROM (SELECT COUNT((SELECT DISTINCT 'O' FROM TRIP s,TRUCK p WHERE s.TRUCKID=p.TRUCKID AND p.NOTES2='ABC' AND p.TRUCKID='553' AND (to_date(d,'DD-Mon-YYYY HH24') 不在 to_date(s. STIME,'DD-Mon-YYYY HH24') AND to_date(s.ETIME,'DD-Mon-YYYY HH24')))) a FROM (SELECT (TRUNC(to_date(sysdate,'DD-MON-YYYY'), 'MM') + level - 1) d FROM dual CONNECT BY level