gpt4 book ai didi

sql-server - 我怎样才能让这个查询返回 0 而不是 null?

转载 作者:行者123 更新时间:2023-12-02 21:47:53 25 4
gpt4 key购买 nike

我有这个查询:

SELECT (SUM(tblTransaction.AmountPaid) - SUM(tblTransaction.AmountCharged)) AS TenantBalance, tblTransaction.TenantID
FROM tblTransaction
GROUP BY tblTransaction.TenantID

但是它有一个问题;还有其他没有交易的 TenantID,我也想获取这些。

例如,事务表有 3 行用于 bob,2 行用于 john,没有行用于 jane。我希望它返回 bob 和 john 的总和,并为 jane 返回 0。 (如果没有其他方法,则可能为 null)

我该怎么做?

表格是这样的:

Tenants    ID    Other Data  Transactions    ID    TenantID (fk to Tenants)  Other Data  

最佳答案

(您没有说明您的 sql 引擎,因此我将链接到 MySQL 文档)。

这几乎正是 COALESCE() 的内容。函数的目的是。您可以向其提供一个列表,它将返回列表中的第一个非空值。您可以在查询中使用它,如下所示:

SELECT COALESCE((SUM(tr.AmountPaid) - SUM(tr.AmountCharged)), 0) AS TenantBalance, te.ID
FROM tblTenant AS te
LEFT JOIN tblTransaction AS tr ON (tr.TenantID = te.ID)
GROUP BY te.ID;

这样,如果 SUM() 结果为 NULL,它将被零替换。

编辑:我使用 LEFT JOIN 以及 COALESCE() 重写了查询,我认为这是您最初缺少的关键。如果您仅从“事务”表中进行选择,则无法获取有关表中事物的信息。但是,通过使用租户表中的左联接,您应该为每个现有租户获取一行。

关于sql-server - 我怎样才能让这个查询返回 0 而不是 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/884135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com