如何从sql表中只返回一个结果?

时间:2015-05-12 18:50:49

标签: sql sql-server select

我有以下数据库表:

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)。我尝试了其他一些查询,但无济于事。

3 个答案:

答案 0 :(得分:6)

您可以添加其他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)

答案 1 :(得分:1)

唯一的方法是通过排除第1行或仅包含第3行和第4行来进一步限定WHERE子句。您需要额外的过滤。必须有其他表连接到该表,以允许您根据已定义的业务规则进行优雅过滤。

答案 2 :(得分:1)

或者您可以使用not in

执行此操作
SELECT SUM(Amount)
FROM mytable
WHERE Ident=3 AND OrderNr NOT IN (SELECT OrderNr
                                  FROM mytable
                                  WHERE Ident=14)