在SQL中使用摘要数据作为参数

时间:2014-11-06 18:33:48

标签: sql ms-access

我是SQL的新手,并且使用Access来运行Excel无法真正处理的查询。以下是查询的基本设计:

SELECT A.ID, A.Description, A.Location, B.ID, B.Quantity, B.Location
FROM A LEFT JOIN B ON A.ID = B.ID

在表B中,location是完全相同的值。我想保留上面的左连接,但是将表A中的结果值限制为B列中的位置值。在我看来,这将是WHERE子句,其中A.Location = max(B.Location)或类似这一点。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

如果要将表A中的结果值限制为表B中的位置值,为什么不能仅使用基于location的连接?

SELECT A.ID, A.Description, A.Location, B.ID, B.Quantity, B.Location
FROM A LEFT JOIN B 
ON A.ID = B.ID
AND A.location = B.location

答案 1 :(得分:0)

您可以使用DMax表达式来获取B.Location的重复非空值。并且可以在WHERE子句中使用该表达式将A行仅限制为仅匹配[Location]的行:

SELECT A.ID, A.Description, A.Location, B.ID, B.Quantity, B.Location
FROM A LEFT JOIN B ON A.ID = B.ID
WHERE A.Location = DMax("[Location]", "B");

如果您不想使用DMax,因为它是特定于访问权限的,您可以这样做:

SELECT A.ID, A.Description, A.Location, B.ID, B.Quantity, B.Location
FROM A LEFT JOIN B ON A.ID = B.ID
WHERE A.Location = (SELECT Max([Location]) FROM B);