替换为sql where子句中的sum

时间:2014-08-25 14:11:49

标签: sql sql-server sum

我有table1代表订单摘要。在table1中,table2与table2有一对多的关系,表示作为订单一部分的不同项。 table1有一个数量字段,应该表示订单中的单个项目的总数。在表2中,数量字段表示该项目类型的单个项目数。

我想看看什么不符合这条规则(我有理由相信规则被打破了)

SELECT table1.id, table1.quantity, table2.orderid, table2.itemqty
FROM table1
INNER JOIN table2 on tabel1.id = table2.orderid
WHERE table1.quantity != SUM(table2.itemqty)

2 个答案:

答案 0 :(得分:3)

您可以使用having子句将条件应用于组:

select  t1.id
,       t1.customer
,       t1.quantity 
,       sum(t2.itemqty)
from    table1 t1
join    table2 t2
on      t1.id = t2.orderid
group by
        t1.id
,       t1.customer
,       t1.quantity 
having  t1.quantity <> sum(t2.itemqty)

答案 1 :(得分:1)

SELECT     table1.id, 
           table1.quantity, 
           table2.orderid, 
           table2.itemqty
FROM       table1
INNER JOIN ( 
               SELECT orderid,
                      SUM(itemqty) as itemqty 
               FROM   table2 
               GROUP BY orderid
           ) table2 
           on tabel1.id = table2.orderid
WHERE      table1.quantity <> table2.itemqty