[英]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.
表1A和表2B在DEPTID上具有一对一的比率。 TABLE3 C, however, does not hold 0 values.
但是,表3 C不包含0值。 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.
当使用TABLE1 A或TABLE2 B进行左外联接时,我可以成功地从COUNT3中获得COUNT值,从而从TABLE3 C中获得0值,但是当我将所有三个表联接在一起时,它给出的是(空)而不是0。 I need it to return 0 instead of (null).
我需要它返回0而不是(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 部门1:人数9
Dept 2: headcount 11 部门2:员工人数11
Dept 3: (null) 部门3 :(无)
Use COALESCE()
or NVL()
to substitute 0
for NULL
values: 使用
COALESCE()
或NVL()
将0
替换为NULL
值:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.