【问题标题】:Oracle SQL - left join + left outer joinOracle SQL - 左连接 + 左外连接
【发布时间】:2016-10-02 18:55:26
【问题描述】:

我正在查询三个表。表 1 A 和表 2 B 在 DEPTID 上具有一比一的比率。然而,表 3 C 不包含 0 值。在使用 TABLE1 A 或 TABLE2 B 进行 LEFT OUTER JOIN 时,我可以成功地让 COUNT 给我来自 TABLE3 C 的 0 值,但是当我将所有三个表连接在一起时,它给了我 (null) 而不是 0。我需要它返回 0 而不是(null)。非常感谢任何帮助:

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

这是我目前得到的:

第 1 部门:员工人数 9
第 2 部门:员工人数 11
3 部门:(空)

【问题讨论】:

  • 一些示例数据(DDL 和 DML 语句)和您的预期输出将真正有助于告知我们您正在尝试做什么。

标签: sql oracle join


【解决方案1】:

使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多