【问题标题】:View comes back blank (uses a subquery to filter balance column)视图返回空白(使用子查询过滤余额列)
【发布时间】:2021-03-17 07:13:53
【问题描述】:

我正在尝试使用子查询从余额列中取回一些数据,但在执行此操作时,数据似乎一无所有,甚至没有任何 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

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

【问题讨论】:

    标签: sql view syntax


    【解决方案1】:

    您只是缺少 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
    

    您其他视图中的“错误”可能是使用了id 列,其中CustomerId 的意思是......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-01
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多