天哪,你写的那么多,看得就晕。
根据你自己需要处理的关系,自行选择用那种JOIN.
例如:A有10条ID记录,B有20条ID记录   两者重复5条ID
A LEFT JOIN B ON A.ID=B.ID    结果:10条。 (即以A为基础,取B中取内容)
A RIGHT JOIN B    ……        结果:20条。  (以B为基础)
A ALL JOIN B                  结果:25条。   (并集)
OUTER JOIN,IN JOIN……自己弄个小表测试一下每种JOIN就明白了。

解决方案 »

  1.   

    其实,主要是修改where后面的语句,以前是在sqlserver中运行的,现在要求适合oracle,
    帮下忙啊
      

  2.   

    其它差不多,isnull改为nvl就行了吧
      

  3.   

    用+的话,这句 ISNULL(RESULT.WORK_KIND, ISNULL(KPLAN.WORK_KIND, 0))*= HOL.WORK_KIND 
    怎么改?
    nvl(RESULT.WORK_KIND, nvl(KPLAN.WORK_KIND, 0))= HOL.WORK_KIND(+)
    肯定是有问题的
      

  4.   

    楼主,你这个SQL也太乱了,我改了一半头都大了!
    还是你自己来吧,isnull()在ORACLE中是用NVL()!Thanks
    Hima
      

  5.   

    我知道啊,这个是原来人家的SQL语句,我是要修改他的
    光改isnull----nvl估计不行的
      

  6.   

    SELECT
        DAY.DAYS       ,
        DAY.WHAT_DAY       ,
        DAY.HOLIDAY       ,
        NVL( RESULT.WORK_KIND , NVL( KPLAN.WORK_KIND , 0 )) KIND_OF_HOLIDAY       ,
        DAY.CALC_TIME1       ,
        DAY.CALC_TIME6       ,
        (DAY.CALC_TIME10 ||DAY.CALC_TIME11) CALC_TIME10       ,
        NVL(JOB.SET_TIME,0) SET_TIME       ,
        NVL(HOL.HOLIDAY_KIND,0) HOLIDAY_KIND       ,
        HOL.PAIDHOLIDAY_KIND       ,
        HOL.WORK_SHORT_NAME HOLIDAY_ABBREVIATIONNAME       ,
        NVL(HOL.HOLIDAY_CNT ,0) HOLIDAY_CNT      ,
        RESULT.HOL_APRVL_STATUS       ,
        DAY.SORT_DAYS SORT_ORDER       ,
        RESULT.TABLE_CODE
    FROM
        KIN_DAT_DAY DAY,
        ORDER_DAT_PERSON_JOB JOB,
        KIN_MST_WORK HOL,
        KIN_DAT_DAY_PLAN KPLAN,
        KIN_DAT_DAY_RESULT RESULT,
        (SELECT
            *
        FROM
            (SELECT
                NVL(RESULT.WORK_KIND,NVL(KPLAN.WORK_KIND,0)) RRESULT
            FROM
                KIN_DAT_DAY_RESULT RESULT,
                KIN_DAT_DAY_PLAN KPLAN
            ) TABLEA LEFT JOIN KIN_MST_WORK HOL ON HOL.WORK_KIND=TABLEA.RRESULT
        ),
        (SELECT
            DAY.PERSON_CODE,
            DAY.YEARS,
            DAY.MONTHS,
            Day.DAYS
        FROM
            KIN_DAT_DAY DAY    LEFT JOIN ORDER_DAT_PERSON_JOB JOB ON DAY.PERSON_CODE=JOB.PERSON_CODE AND DAY.YEARS=JOB.YEARS AND DAY.MONTHS  = JOB.MONTHS AND DAY.DAYS=JOB.DAYS
        )
    WHERE
        DAY.PERSON_CODE = '7011' AND
        DAY.YEARS = '2006' AND
        DAY.MONTHS = '1' AND
        DAY.PERSON_CODE = RESULT.PERSON_CODE AND
        DAY.YEARS = RESULT.YEARS AND
        DAY.MONTHS = RESULT.MONTHS AND
        DAY.DAYS = RESULT.DAYS AND
        DAY.PERSON_CODE = KPLAN.PERSON_CODE AND
        DAY.YEARS = KPLAN.YEARS AND
        DAY.MONTHS = KPLAN.MONTHS AND
        Day.DAYS = KPLAN.DAYS
    ORDER BY
        SORT_ORDER
      

  7.   

    你的SQL我看着头晕,估计我改了之后,你也看得头晕,路过,顶一下呵