我有以下数据库表:

LNr OrderNr Ident Amount
1   128     3     123.00
2   128     14    200.00
3   1290    3     300.00
4   13400   3     637.00


我想计算Amount字段的总和,其中Ident等于3,但不能同时等于14。因此,我希望数据库服务器仅返回行号3和4(其中OrderNr = 1290和13400)。

我试过了:

SELECT SUM(Amount) FROM table WHERE Ident = '3'


但这当然是行不通的,因为它还会返回第1行(我不希望这样做,因为Ident等于14)。我尝试了其他一些查询,但无济于事。

最佳答案

您可以添加另一个not exists条件:

SELECT SUM(Amount)
FROM   mytable x
WHERE  Ident = 3 AND
       NOT EXISTS (SELECT *
                   FROM   mytable y
                   WHERE  x.OrderNr = y.OrderNr AND y.Ident = 14)

10-07 15:04