Je suis nouveau sur SQL Server. Je veux égaler deux colonnes en utilisant la fonction sum
. Veuillez trouver la requête ci-dessous.
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
Chaque fois que j'exécute ce code, j'obtiens une erreur.
Aidez-moi, s'il vous plaît.
Vous pouvez simplement utiliser AVOIR :
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
Vous pouvez utiliser ceci:
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
Essayez d’utiliser HAVING au lieu de clauses WHERE dans les requêtes de somme. En outre: ajoutez des indentations et des majuscules pour plus de lisibilité.
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;