首页 > 解决方案 > 视图返回空白(使用子查询过滤余额列)

问题描述

我正在尝试使用子查询从余额列中取回一些数据,但似乎数据返回时什么都没有,甚至在执行此操作时也没有任何 id。如果我做一个简单的查询,那很好,但我试图过滤我的数据,以便只选择选定数量的行。此查询应该有效:

CREATE VIEW CustomerDebt as
select id, 
balance from (
    SELECT
    Ca.id,
    (sum(Ca.DebitAmount) - sum(Ca.Creditamount)) as [balance]
    FROM
    CustomerAccount Ca 
    GROUP BY id) 
    as debt
where balance < 0

这是在不使用子查询的情况下工作的查询,但包括所有 0 的 id 以及我不想要的余额:

CREATE VIEW CustomerDebt as
SELECT
Ca.Customerid,
(sum(Ca.DebitAmount) - sum(Ca.Creditamount)) as [balance]

FROM
CustomerAccount Ca

GROUP BY
Ca.Customerid

如果我可以解释为什么它不起作用,可能是语义错误或其他什么(我对这些东西不熟悉)。

标签: sqlviewsyntax

解决方案


您只是缺少 HAVING 子句(组的 WHERE):

CREATE VIEW CustomerDebt as
SELECT Ca.Customerid,
     (sum(Ca.DebitAmount) - sum(Ca.Creditamount)) as [balance]
FROM CustomerAccount Ca
GROUP BY Ca.Customerid
HAVING (sum(Ca.DebitAmount) - sum(Ca.Creditamount)) < 0

您其他视图中的“错误”可能是使用了该列idCustomerId含义...


推荐阅读