您的查询不包括指定的表达式“ID”作为聚合函数的一部分。微软访问

时间:2021-02-04 22:51:36

标签: ms-access

亲爱的开发者朋友,您好,我正在尝试以下代码,但出现此错误:您的查询不包含指定的表达式“ID”作为聚合函数的一部分。

代码是

SELECT ID, Date, Time, Status, BoxType, Material, Rack, EmployeeNr, Transaction FROM Records 
WHERE Transaction<100 AND ID NOT IN 
(SELECT `ID` FROM Records a WHERE EXISTS 
   (SELECT `ID` FROM records b WHERE b.Transaction>100 AND (b.Date=a.Date) AND (b.Time > a.Time) AND (b.Transaction-100=a.Transaction))) 
UNION 
SELECT ID, Date, Time, Status, BoxType, Material, Rack, EmployeeNr, Transaction FROM records a WHERE EXISTS 
(SELECT `ID` FROM records b WHERE b.Transaction>100 AND (b.date=a.date) AND (b.time > a.time) AND (b.Transaction-100=a.Transaction)) 
GROUP BY Transaction 
HAVING COUNT(Transaction)>1

1 个答案:

答案 0 :(得分:2)

您既按交易分组又计算交易,这没有多大意义。

如果只计算一个字段,则其余字段必须按某种方式分组或聚合。此外,保留字必须用方括号括起来(Status 和 Transaction 可能也需要),并且您不会提取字符串 "ID" 而是从子查询中提取字段。

因此,由于我们不知道您要实现的目标,因此无法提供直接的解决方案,但这应该可以帮助您入门:

SELECT 
    ID, [Date], [Time], Status, BoxType, Material, Rack, EmployeeNr, Transaction 
FROM 
    Records 
WHERE 
    Transaction < 100 AND ID NOT IN 
    (SELECT ID FROM Records a WHERE EXISTS 
        (SELECT ID FROM Records b WHERE 
        b.Transaction>100 AND (b.Date=a.Date) AND (b.Time > a.Time) AND (b.Transaction-100=a.Transaction))) 
UNION 
SELECT 
    ID, [Date], [Time], Status, BoxType, Material, Rack, EmployeeNr, Transaction 
FROM 
    Records a 
WHERE EXISTS 
    (SELECT ID FROM Records b WHERE 
        b.Transaction>100 AND (b.date=a.date) AND (b.time > a.time) AND (b.Transaction-100=a.Transaction)) 
GROUP BY 
    ID, [Date], [Time], Status, BoxType, Material, Rack, EmployeeNr, Transaction 
HAVING 
    COUNT(Transaction) > 1
相关问题