【问题标题】: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;
        

        【讨论】:

          猜你喜欢
          • 2017-12-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-29
          • 1970-01-01
          • 2020-07-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多