2

我有一个查询,可以获取员工获得、使用和离开的休假时间。我已经修改了“Gain”上的 Alike 语句来寻找“Anniversary”然后返回值。它现在返回 0 Iif 的失败语句。这是SQL。

SELECT 
       SchedulingLog.UserID, 
       SchedulingLog.Category, 
       Sum(IIf([CatDetail] ALike 'Anniversary*',[Value],0)) AS Gain, 
       Sum(IIf(CatDetail ALike '%Used',[Value],0)) AS Used, [Gain]+[Used] AS [Left]
FROM SchedulingLog
GROUP BY SchedulingLog.UserID, SchedulingLog.Category
HAVING (((SchedulingLog.Category) Like "Vac*"));
4

3 回答 3

2

当您使用 Alike 时,您将使用 ANSI 通配符 (%) 而不是 Jet 的默认值 (*)。

所以

WHERE FieldName Like 'Something*'

将会

WHERE FieldName ALike 'Something%'
于 2012-12-18T17:13:15.573 回答
1

有几件事。我认为您想要“Anniversary%”和“Vac%”,我建议您使用类似功能与类似功能。我读过访问确实支持通过 ADO 连接,但没有记录我可以找到。

验证 CatDetail 是否包含源表中“AnniversaryXXXXX”形式的数据,如果列不总是以“Anniversary”开头,您可能需要将其修改为“%Anniversary%”

于 2012-12-18T17:09:49.597 回答
1

您正在使用标准 ANSI SQL 设置纯粹在 MS Access 中工作,对吗?如果是这样,则无需使用 Alike 使事情复杂化,只需使用 Like 和标准通配符 *。

于 2012-12-18T17:29:38.293 回答