【问题标题】:How to use sum function in where clause in SQL Server?如何在 SQL Server 的 where 子句中使用 sum 函数?
【发布时间】:2018-05-17 14:58:40
【问题描述】:
我是 SQL Server 的新手。我想使用sum 函数等于两列。请找到以下查询。
select top 1000
o.orderamount, sum(oi.amount), oi.orderid
from
orders o
inner join
orderitem oi on o.orderid = oi.orderid
where
orderamount = sum(oi.amount)
group by
oi.orderid, orderamount
order by
oi.orderid desc
每当我执行此代码时,都会出现错误。
请帮帮我。
【问题讨论】:
标签:
sql
sql-server
tsql
sql-server-2012
sum
【解决方案1】:
你可以使用HAVING:
select top 1000 o.orderamount, sum(oi.amount), oi.orderid
from orders o
inner join orderitem oi on o.orderid = oi.orderid
group by oi.orderid ,orderamount
HAVING orderamount = sum(oi.amount)
order by oi.orderid desc
【解决方案2】:
你可以用这个:
select top 1000 o.orderamount, oi.amount, oi.orderid
from orders o
inner join (select orderid, sum(amount) amount from orderitem group by orderid) orderitem
oi on o.orderid = oi.orderid and orderamount = oi.amount
order by oi.orderid desc
【解决方案3】:
尝试在 sum 查询中使用 HAVING 而不是 WHERE 子句。
另外:添加缩进和大写以提高可读性
SELECT TOP 1000 o.OrderAmount, sum(oi.Amount), oi.OrderID
FROM Orders o
INNER JOIN OrderItem oi ON oi.OrderID = o.OrderID
GROUP BY oi.OrderID, OrderAmount
HAVING OrderAmount = sum(oi.Amount)
ORDER BY oi.OrderID DESC;