我在查询编辑器中有一个具有以下sql的查询:
SELECT tbl_PN_Import.PN, Last(tbl_PN_Import.Master_PN) AS Master_PN
FROM tbl_PN_Import
GROUP BY tbl_PN_Import.PN
Having (((Last(tbl_PN_Import.Master_PN)) Is Not Null))
ORDER BY tbl_PN_Import.PN;`
它在查询编辑器中返回10000+条记录。
下面是一个样本记录列表。我们的数据库包含与备用零件号有一对多关系的主零件号。pn字段包含主零件号和备用零件号。如果pn是主pn,则在主pn字段中没有条目。如果零件号是备用零件号,则其主零件号在主零件号字段中。
PN Master_PN
NAS1149FN432P
AN960-4 NAS1149FN432P
AD64ALS
SSPQ-4-3
SSPQ-04-03 SSPQ-4-3
在vba中使用sql字符串变量和 .OpenRecordSet
它只返回第一条记录。当我移除 Having....
它返回预期的70000多条记录。
我有其他的问题没有那就没有了 Having...
好用的动词。
感谢您的帮助。
2条答案
按热度按时间oknrviil1#
尝试过滤空值:
或者,因为last只返回“值”:
vaqhlq812#
LAST
未在未排序的结果集上定义,这意味着任何行都可以。使用子查询强制执行特定顺序,或避免使用LAST
总而言之。子查询的示例如下:
如果你没有一个id字段或任何你可以订购的东西,你不能期望
LAST
产生连贯的结果。