首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否按虚拟列筛选?

是否按虚拟列筛选?
EN

Stack Overflow用户
提问于 2010-12-22 05:50:35
回答 2查看 463关注 0票数 0

我有以下数据库结构:

代码语言:javascript
复制
[Order]
OrderId
Total

[Payment]
OrderId
Amount

每个订单可以有X个付款行。我只想得到所有付款的总和小于订单总数的订单列表。

我有以下SQL,但我会返回所有订单支付和未支付。

代码语言:javascript
复制
   SELECT o.OrderId, 
          o.UserId, 
          o.Total, 
          o.DateCreated, 
          COALESCE(SUM(p.Amount),0) AS Paid
     FROM [Order] o
LEFT JOIN Payment p ON p.OrderId = o.OrderId
 GROUP BY o.OrderId, o.Total, o.UserId, o.DateCreated

我尝试添加Where (Paid < o.Total),但它不起作用,有什么想法吗?BTM我使用的是SQL CE 3.5

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-22 05:56:38

您要查找的是HAVING子句。

不是"Where (COALESCE(SUM(p.Amount),0) < o.Total)",而是"HAVING (COALESCE(SUM(p.Amount),0) < o.Total)“

查看MSDN Reference on HAVING

票数 4
EN

Stack Overflow用户

发布于 2010-12-22 05:57:12

代码语言:javascript
复制
Select Order.* From Order
Left Join
(Select OrderID, Sum(Amount) As t From Payment Group By OrderID) As s On s.OrderID = Oder.OrderID
Where IsNULL(s.t,0) < Order.Total
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4504269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档