简体   繁体   中英

Oracle SQL - left join + left outer join

I am querying three tables. TABLE1 A and TABLE2 B have a one-to-one ratio on DEPTID. TABLE3 C, however, does not hold 0 values. I can successfully get COUNT to give me 0 values from TABLE3 C when doing a LEFT OUTER JOIN with TABLE1 A or TABLE2 B, but it gives me (null) instead of 0 when I join all three tables together. I need it to return 0 instead of (null). Any help is very much appreciated:

SELECT A.DEPTID, B.DEPT_NAME, SUM(C.HEAD_COUNT)
FROM TABLE1 A
LEFT JOIN TABLE2 B ON A.DEPTID = B.DEPTID
LEFT OUTER JOIN TABLE3 C ON A.POSITION_NUMBER = C.POSITION_NUMBER
GROUP BY A.DEPTID, B.DEPT_NAME

Here is what I am currently getting:

Dept 1: headcount 9
Dept 2: headcount 11
Dept 3: (null)

Use COALESCE() or NVL() to substitute 0 for NULL values:

SELECT   A.DEPTID,
         B.DEPT_NAME,
         SUM(COALESCE( C.HEAD_COUNT, 0 ) )
FROM     TABLE1 A
         LEFT OUTER JOIN TABLE2 B
         ON A.DEPTID = B.DEPTID
         LEFT OUTER JOIN TABLE3 C
         ON A.POSITION_NUMBER = C.POSITION_NUMBER
GROUP BY A.DEPTID,
         B.DEPT_NAME

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM