如何从其他表中减去一个表和

时间:2012-02-21 23:04:55

标签: sql sql-server

我有两个表:IssueReturn。两个表都有article_idperson_idquantity列。我需要从Return表中为一个人减去Issue表,并按结果名称对结果进行分组。

首先选择如下:

SELECT Article.Name, SUM(Issue.Quantity)
FROM Issue LEFT JOIN Article ON (Issue.ArticleID = Article.ID)
WHERE Issue.PersonID = 2
GROUP BY Article.Name
ArticleName  |  Quantity
------------------------
Shoes        |  5
Coats        |  3
Hats         |  3

第二个像这样:

SELECT Article.Name, SUM(Return.Quantity)
FROM Return LEFT JOIN Article ON (Return.ArticleID = Article.ID)
WHERE Return.PersonID = 2
GROUP BY Article.Name
ArticleName  |  Quantity
------------------------
Shoes        |  3
Coats        |  2
Hats         |  0

问题是,如何从第一个(Return - Issue)中减去第二个选择以获得这样的表:

ArticleName  |  Quantity
------------------------
Shoes        |  2
Coats        |  1
Hats         |  3

最终结果中的数量应该是要退回的剩余物品的数量。

1 个答案:

答案 0 :(得分:4)

这可能有效:

(经过大量编辑 - 我的第一个答案没有机会工作......)

SELECT Article.Name
, (SELECT SUM(Issue.Quantity) FROM Issue WHERE Issue.ArticleID = Article.ID AND Issue.PersonID = 2)
- (SELECT SUM(Return.Quantity) FROM Return WHERE Return.ArticleID = Article.ID AND Return.PersonID = 2)
FROM Article