web-dev-qa-db-fra.com

Comment utiliser la fonction sum dans la clause where dans SQL Server?

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.

6
Pavan Reddy

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
9
gotqn

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
0
Md. Suman Kabir

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;
0
TheKevlar