1

我有一个 SQL 正在工作并从 MS-Access 返回我需要的信息,但是它一直要求我输入“Annual Accrual”和“Used”的参数值。

    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];
4

3 回答 3

4

我认为这是[Annual Accrual]因为您[Annual Accrual]*[Schedule]group by第一个查询的子句中有要求。试着把它拿出来。

出于[Used]同样的原因,正如您在第二个查询的子句中所[Annual Vac Days]+[Used]引用的那样。group by

于 2012-12-10T20:05:01.540 回答
3

我想你可能有两个不同的问题。

该 SQL 中没有名为“Annual Accrual”的字段。也许它包含在qry_YearsOfService但拼写错误(?)。qry_YearsOfService如果找不到问题,请向我们展示 SQL 。

您的GROUP BY子句引用[Used],它是在字段表达式列表中定义的别名。我怀疑 db 引擎将其解释为 中的参数,GROUP BY因为它对于允许您稍后在查询中使用字段别名非常严格。我认为你需要改变这一点。向我们展示简短的样本SchedulingLogqry_YearsOfService如果你需要帮助来整理它。

除了这些问题,您的字段列表包括SchedulingLog.Category两次,第一次别名为Type,第二次未别名。我不明白那是什么意思。两次包含相同的字段可能不会产生问题,但是Type可能因为它是保留字。如果您将其保留为别名,请将其括在方括号中以确保安全。

于 2012-12-10T19:53:08.097 回答
1

您没有在此查询中的任何地方使用“Annual Accrual”,因此必须从 qry_YearsOfService 或更进一步的嵌套查询中调用它。

至于“已使用”,请在 Group By 中更改对 Sum(SchedulingLog.Value) 的引用。

于 2012-12-10T19:52:48.877 回答