在SQL中将摘要数据用作参数
我是SQL新手,正在使用Access运行Excel无法真正处理的查询。以下是查询的基本设计:在SQL中将摘要数据用作参数,sql,ms-access,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中,位置都是相同的值。我想保留上面的左连接,但将表A中的结果值限制为列B中的位置值。在我看来,这将是一个WHERE子句,其中A.location=maxB.location或类似的内容 有什么
SELECT A.ID, A.Description, A.Location, B.ID, B.Quantity, B.Location
FROM A LEFT JOIN B ON A.ID = B.ID
在表B中,位置都是相同的值。我想保留上面的左连接,但将表A中的结果值限制为列B中的位置值。在我看来,这将是一个WHERE子句,其中A.location=maxB.location或类似的内容
有什么想法吗?如果要将表A中的结果值限制为表B中的位置值,为什么不能简单地使用基于位置的连接呢 可以使用DMax表达式获取B.Location的重复非空值。该表达式可在WHERE子句中用于将行限制为仅具有匹配[Location]的行: 选择A.ID、A.说明、A.位置、B.ID、B.数量、B.位置 从A上的左连接B.ID=B.ID 其中A.位置=DMax[位置],B; 如果您不喜欢使用DMax,因为它是特定于访问的,那么您可以通过以下方式: 选择A.ID、A.说明、A.位置、B.ID、B.数量、B.位置 从A上的左连接B.ID=B.ID 其中A.位置=从B中选择最大[位置];
因为表A有我不想要的所有类型的位置数据。我想根据表B中的位置限制表A返回的内容。这有意义吗?抱歉@hashbrown,不清楚。下面是第二个尝试:因为我想保留A.ID=B.ID但B.location为空的行。基本上,B.Location只有一个值,我想运行一个WHERE子句,将a.Location中的值限制为该值的任何值。就是这样!谢谢,我从来没有遇到过DMax或DMin函数。非常有帮助!
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