我有一个正在运行的SQL并从MS-Access返回我需要的信息,但它一直要求我输入“年度应计”和“已使用”的参数值。
SELECT SchedulingLog.UserID, SchedulingLog.Category AS Type,
Sum(SchedulingLog.Value) AS Used, SchedulingLog.Category,
qry_YearsOfService.[Annual Vac Days], [Annual Vac Days]+[Used] AS [Days Left]
FROM SchedulingLog INNER JOIN qry_YearsOfService ON
SchedulingLog.UserID = qry_YearsOfService.UserID
GROUP BY SchedulingLog.UserID, SchedulingLog.Category, SchedulingLog.Category,
qry_YearsOfService.[Annual Vac Days], [Annual Vac Days]+[Used]
HAVING (((SchedulingLog.Category) Like "Vac*"));
我不想要输入参数的选项,它应该只计算。我错过了什么?
以下是服务年限查询的SQL
SELECT Roster.UserID, Roster.[WM DOH], Round((Date()-[WM DOH])/365,2) AS YearsOfService,
Max (tblAccrual.WeeksAccrual) AS [Annual Accrual], Roster.Schedule,
[Annual Accrual]*[Schedule] AS [Annual Vac Days]
FROM Roster, tblAccrual
WHERE ((([tblAccrual]![Years])<Round((Date()-[WM DOH])/365,2)))
GROUP BY Roster.UserID, Roster.[WM DOH],
Round((Date()-[WM DOH])/365,2), Roster.Schedule, [Annual Accrual]*[Schedule];
答案 0 :(得分:4)
我认为它要求[Annual Accrual]
,因为您在第一个查询的[Annual Accrual]*[Schedule]
子句中有group by
。试着把它拿出来。
出于同样的原因请求[Used]
,因为您在第二个查询的[Annual Vac Days]+[Used]
子句中引用了group by
。
答案 1 :(得分:3)
我认为你可能有两个不同的问题。
该SQL中没有名为“年度应计”的字段。也许它包含在qry_YearsOfService
中,但拼写不正确(?)。如果找不到问题,请向我们展示qry_YearsOfService
的SQL。
您的GROUP BY
子句引用[Used]
,这是在字段表达式列表中定义的别名。我怀疑db引擎将它解释为GROUP BY
中的参数,因为它允许您稍后在查询中使用字段别名是非常有限的。我想你需要改变它。如果您需要帮助排序,请向我们展示SchedulingLog
和qry_YearsOfService
的简短样本。
除了这些问题之外,您的字段列表还包括SchedulingLog.Category
两次,第一次别名为Type
,第二次为非混淆。我不明白这一点。包括两次相同的字段可能不会产生问题,但Type
可能因为它是保留字。如果将其保留为别名,请将其括在方括号中,以确保安全。
答案 2 :(得分:1)
您在此查询中的任何位置都没有使用“年度应计”,因此必须从qry_YearsOfService或更进一步嵌套的查询中调用它。
对于“已使用”,请在Group By中更改对Sum(SchedulingLog.Value)的引用。