天哪,你写的那么多,看得就晕。
根据你自己需要处理的关系,自行选择用那种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就明白了。
根据你自己需要处理的关系,自行选择用那种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就明白了。
帮下忙啊
怎么改?
nvl(RESULT.WORK_KIND, nvl(KPLAN.WORK_KIND, 0))= HOL.WORK_KIND(+)
肯定是有问题的
还是你自己来吧,isnull()在ORACLE中是用NVL()!Thanks
Hima
光改isnull----nvl估计不行的
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