Sql 当没有与查询匹配的FLI,但存在租约时,如何显示0
喂,我们有两张桌子 表1(租赁)和表2(金额) 表租赁Sql 当没有与查询匹配的FLI,但存在租约时,如何显示0,sql,db2,Sql,Db2,喂,我们有两张桌子 表1(租赁)和表2(金额) 表租赁 +----------+------------+ |租赁ID |状态| +----------+------------+ |001 |激活| +----------+------------+ |002 |激活| +----------+------------+ |003 |未激活| +----------+------------+ |004 |激活| +----------+------------+ 表金额 +---------
+----------+------------+
|租赁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:谢谢你的回答,它很有效。