Sql 当没有与查询匹配的FLI,但存在租约时,如何显示0

Sql 当没有与查询匹配的FLI,但存在租约时,如何显示0,sql,db2,Sql,Db2,喂,我们有两张桌子 表1(租赁)和表2(金额) 表租赁 +----------+------------+ |租赁ID |状态| +----------+------------+ |001 |激活| +----------+------------+ |002 |激活| +----------+------------+ |003 |未激活| +----------+------------+ |004 |激活| +----------+------------+ 表金额 +---------

喂,我们有两张桌子

表1(租赁)和表2(金额)

表租赁

+----------+------------+
|租赁ID |状态|
+----------+------------+
|001 |激活|
+----------+------------+
|002 |激活|
+----------+------------+
|003 |未激活|
+----------+------------+
|004 |激活|
+----------+------------+

表金额

+---------+--------+---------+
|期间|金额|租赁期|
+---------+--------+---------+
| 2019-01 | 100    | 001     |
+---------+--------+---------+
| 2019-02 | 200    | 001     |
+---------+--------+---------+
| 2019-01 | 300    | 002     |
+---------+--------+---------+
| 2019-02 | 400    | 002     |
+---------+--------+---------+

查询期=2019-02。它必须以以下格式仅显示活动租约:

预期产量

+----------+--------+
|租赁ID |金额|
+----------+--------+
| 001      | 200    |
+----------+--------+
| 002      | 400    |
+----------+--------+
| 004      | 0      |
+----------+--------+

但是,我越来越喜欢:

+----------+--------+
|租赁ID |金额|
+----------+--------+
| 001      | 200    |
+----------+--------+
| 002      | 400    |
+----------+--------+


如何将查询期间金额记录为空的租约ID显示为0。

您可以使用
左连接

select l.leaseid, coalesce(a.amount, 0)
from lease l left join
     amount a
     on a.leaseid = l.leaseid and a.period = '2019-02'
where l.status = 'active';

我删除了不一致的数据库标记。请仅使用您真正使用的数据库进行标记。不要为未涉及的产品添加标记。您使用的是MySQL、DB2还是Oracle?这里的大多数人都希望将示例表数据和预期结果作为格式化文本,而不是图像。您使用的是DB2还是Oracle?使用ON而不是WHERE时,它似乎可以正常工作。谢谢@jarlh切换到
“活动”
。。。(看起来你的专栏是区分大小写的。)@Yogesh Sharma:谢谢你的回答,它很有效。