2017-12-04 13 views
3

私はSQL Serverを初めて使用しています。私はsum機能を使用して2つの列に等しくしたい。以下のクエリを見つけてください。SQL Serverのwhere句で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 

このコードを実行するとエラーが発生します。

私を助けてください。

答えて

7

あなただけ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 
0

あなたは、この使用することができます:

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

は合計クエリではなく、HAVING句を使用してみてください。 :可読性のために字下げと大文字を追加してください。

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; 
関連する問題