17,082
社区成员
发帖
与我相关
我的任务
分享
with T AS (
SELECT TO_DATE('2014120100','YYYYMMDDHH24')+(ROWNUM-1)/24 D FROM DUAL
CONNECT BY TO_DATE('2014120100','YYYYMMDDHH24')+(ROWNUM-1)/24<= TO_DATE('2014120123','YYYYMMDDHH24')
)
SELECT TO_CHAR(T.D,'YYYYMMDD') DATE,TO_CHAR(T.D,'HH24') TIME,
SUM(
A.amount/(A.ENDTIME-A.STARTTIME)*(LEAST(T.D+1/24,A.ENDTIME)-GREATEST(T.D,A.STARTTIME))
) AS amount
FROM T LEFT JOIN TABLE1 A
ON T.D>=TRUNC(A.STARTTIME) AND T.D<TRUNC(A.ENDTIME)+1/24
GROUP BY T.D
with T AS (
SELECT TO_DATE('20141201','YYYYMMDD')+ROWNUM-1 D FROM DUAL
CONNECT BY TO_DATE('20141201','YYYYMMDD')+ROWNUM-1<= TO_DATE('20141231','YYYYMMDD')
)
SELECT TO_CHAR(T.D,'YYYYMM') DATE,TO_CHAR(T.D,'DD') TIME,
SUM(
A.amount/(A.ENDTIME-A.STARTTIME)*(LEAST(T.D+1,A.ENDTIME)-GREATEST(T.D,A.STARTTIME))
) AS amount
FROM T LEFT JOIN TABLE1 A
ON T.D>=TRUNC(A.STARTTIME) AND T.D<TRUNC(A.ENDTIME)+1
GROUP BY T.D