sql - 视图返回空白(使用子查询过滤余额列)
问题描述
我正在尝试使用子查询从余额列中取回一些数据,但似乎数据返回时什么都没有,甚至在执行此操作时也没有任何 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
如果我可以解释为什么它不起作用,可能是语义错误或其他什么(我对这些东西不熟悉)。
解决方案
您只是缺少 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
含义...
推荐阅读
- google-cloud-storage - Gcloud 数据流作业无法写入临时位置
- python - 如何在 GCP 的 Jupyter notebook 中安装自定义库?
- javascript - Django将具有JS图表的HTML转换为PDF
- android - 向我的 kotlin 应用程序添加语音响应
- javascript - angularjs 在控制器启动之前解决承诺
- postgresql - Scala Upserts 使用 jdbcpreparedstatement 和 foreachPartition
- react-leaflet - 是否可以在 react-leaflet 单独的类名中给出每个标记?
- wpf - 如何更改单击按钮 WPF 的颜色
- visual-studio - 还原 NuGet 包时出错:“无效的还原输入。未指定目标框架。”
- matlab - Matlab中如何更改当前文件夹