我不太确定为什么以下查询不会在Access中运行。 它要求我给出s1.sku的价值
SELECT s1.SkuApexId, s1.sku, s1.apex, s1.btw, s1.gebruikernr, q2.*
FROM tblSkuApex AS s1,
(SELECT MAX(s2.begindatum)
FROM tblskuapex s2
WHERE s1.sku = s2.sku) q2
答案 0 :(得分:4)
你提出它的方式,你需要交叉连接到q2表,这将根据s1表的每个记录的s1.sku值进行更改,这是不可接受的。
我认为你应该把q2子查询作为一个列而不是一个表。由于您检索单个值,因此可以轻松地将其设置为:
SELECT s1.SkuApexId, s1.sku, s1.apex, s1.btw, s1.gebruikernr,
(SELECT MAX(s2.begindatum)
FROM tblskuapex s2
WHERE s1.sku = s2.sku) as maxbegindatum
FROM tblSkuApex AS s1
甚至更好,为什么不把它作为普通的聚合,因为你从同一个表中请求max:
SELECT
s1.SkuApexId, s1.sku, s1.apex,
s1.btw, s1.gebruikernr, MAX(begindatum)
FROM tblSkuApex AS s1
group by
s1.SkuApexId, s1.sku, s1.apex,
s1.btw, s1.gebruikernr
注意:你可以在任何地方省略s1别名