我想用一个查询语句查询出同一个表不同日期的数据,现在碰到的情况是,如果两天数据都有,下面的语句可以,但是如果有一天没有数据,则连有数据的那天都查不到了,请帮我看看下面语句有什么问题,谢谢!SELECT A.SVC_KND,
SUM(A.NEW_UNUM) AS NEW_UNUM,
SUM(A.OFF_UNUM) AS OFF_UNUM,
SUM(A.ONL_UNUM) AS ONL_UNUM,
SUM(A.CALL_UNUM) AS CALL_UNUM,
SUM(A.CALL_DURA) AS CALL_DURA,
SUM(A.CALL_TIMES) AS CALL_TIMES,
SUM(B.NEW_UNUM)  AS LAST_NEW_UNUM,
SUM(B.OFF_UNUM) AS LAST_OFF_UNUM,
SUM(B.ONL_UNUM) AS LAST_ONL_UNUM,
SUM(B.CALL_UNUM) AS LAST_CALL_UNUM,
SUM(B.CALL_DURA) AS LAST_CALL_DURA,
SUM(B.CALL_TIMES) AS LAST_CALL_TIMES
FROM FM_BOSS_DAY_SUMARY A, FM_BOSS_DAY_SUMARY B
where A.SVC_KND = B.SVC_KND
and A.GATHER_DAY=20051001
AND B.GATHER_DAY=20050930
GROUP BY GROUPING SETS((A.SVC_KND))

解决方案 »

  1.   

    SELECT A.SVC_KND,
    SUM(A.NEW_UNUM) AS NEW_UNUM,
    SUM(A.OFF_UNUM) AS OFF_UNUM,
    SUM(A.ONL_UNUM) AS ONL_UNUM,
    SUM(A.CALL_UNUM) AS CALL_UNUM,
    SUM(A.CALL_DURA) AS CALL_DURA,
    SUM(A.CALL_TIMES) AS CALL_TIMES,
    SUM(B.NEW_UNUM) AS LAST_NEW_UNUM,
    SUM(B.OFF_UNUM) AS LAST_OFF_UNUM,
    SUM(B.ONL_UNUM) AS LAST_ONL_UNUM,
    SUM(B.CALL_UNUM) AS LAST_CALL_UNUM,
    SUM(B.CALL_DURA) AS LAST_CALL_DURA,
    SUM(B.CALL_TIMES) AS LAST_CALL_TIMES
    FROM FM_BOSS_DAY_SUMARY A, FM_BOSS_DAY_SUMARY B
    where A.SVC_KND(+) = B.SVC_KND
    and A.GATHER_DAY=20051001
    AND B.GATHER_DAY=20050930
    GROUP BY GROUPING SETS((A.SVC_KND))
    union
    SELECT A.SVC_KND,
    SUM(A.NEW_UNUM) AS NEW_UNUM,
    SUM(A.OFF_UNUM) AS OFF_UNUM,
    SUM(A.ONL_UNUM) AS ONL_UNUM,
    SUM(A.CALL_UNUM) AS CALL_UNUM,
    SUM(A.CALL_DURA) AS CALL_DURA,
    SUM(A.CALL_TIMES) AS CALL_TIMES,
    SUM(B.NEW_UNUM) AS LAST_NEW_UNUM,
    SUM(B.OFF_UNUM) AS LAST_OFF_UNUM,
    SUM(B.ONL_UNUM) AS LAST_ONL_UNUM,
    SUM(B.CALL_UNUM) AS LAST_CALL_UNUM,
    SUM(B.CALL_DURA) AS LAST_CALL_DURA,
    SUM(B.CALL_TIMES) AS LAST_CALL_TIMES
    FROM FM_BOSS_DAY_SUMARY A, FM_BOSS_DAY_SUMARY B
    where A.SVC_KND = B.SVC_KND(+)
    and A.GATHER_DAY=20051001
    AND B.GATHER_DAY=20050930
    GROUP BY GROUPING SETS((A.SVC_KND))左有各连接一次