当 Access 2013 中没有匹配的记录时,如何查询 return 0?
How do I make query return 0 when no records match in Access 2013?
我的 Access 2013 数据库中有一个查询,用于计算符合特定条件的记录数量。但是,在某些情况下,没有记录会匹配并且查询 returns 什么也没有。当我在计算中使用此值时,这会导致问题。请从下面的查询中找到 SQL 代码。
SELECT [Main Database].Renewal,
[Main Database].[2014/15 - Permission to Review],
Count(Main Database].[2014/15 - Permission to Review]) AS [CountOf2014/15 - Permission to Review]
FROM [Main Database]
GROUP BY [Main Database].Renewal, [Main Database].[2014/15 - Permission to Review]
HAVING ((([Main Database].Renewal) Like "**/05/****") AND (([Main Database].[2014/15 - Permission to Review])="Yes"));
我尝试过使用 Nz 函数和 IIF(IsNull([])),但是这些似乎都不起作用。
有没有我做错了什么或有其他方法可以实现我想要的?
编辑 - 带有子查询的新代码
SELECT COUNT (*) AS iniSumNov
FROM (
SELECT [Main Database].Renewal, [Main Database].[2014/15 - Initial Contact],
Count([Main Database].[2014/15 - Initial Contact])
AS [CountOf2014/15 - Initial Contact]
FROM [Main Database]
GROUP BY [Main Database].Renewal, [Main Database].[2014/15 - Initial Contact]
HAVING ((([Main Database].Renewal) Like "**/11/****") AND (([Main Database].[2014/15 - Initial Contact])="Yes"))
);
使用这个..
SELECT A.Renewal as Renewal ,
A.[2014/15 - Permission to Review] as Permission_to_Review,
IIF(isNull(Count(A.[2014/15 - Permission to Review])),0,Count(A.[2014/15 - Permission to Review])) AS count_Permission_to_Review
FROM [Main Database] A
where (((A.Renewal) Like "**/05/****") AND ((A.[2014/15 - Permission to Review])="Yes"))
GROUP BY A.Renewal, A.[2014/15 - Permission to Review]
;
在子查询上使用 COUNT(*):
SELECT COUNT(*) as NbRecords
FROM (
SELECT ...whatever you need
)
如果子查询为空,主查询会returnNbRecords = 0
我的 Access 2013 数据库中有一个查询,用于计算符合特定条件的记录数量。但是,在某些情况下,没有记录会匹配并且查询 returns 什么也没有。当我在计算中使用此值时,这会导致问题。请从下面的查询中找到 SQL 代码。
SELECT [Main Database].Renewal,
[Main Database].[2014/15 - Permission to Review],
Count(Main Database].[2014/15 - Permission to Review]) AS [CountOf2014/15 - Permission to Review]
FROM [Main Database]
GROUP BY [Main Database].Renewal, [Main Database].[2014/15 - Permission to Review]
HAVING ((([Main Database].Renewal) Like "**/05/****") AND (([Main Database].[2014/15 - Permission to Review])="Yes"));
我尝试过使用 Nz 函数和 IIF(IsNull([])),但是这些似乎都不起作用。
有没有我做错了什么或有其他方法可以实现我想要的?
编辑 - 带有子查询的新代码
SELECT COUNT (*) AS iniSumNov
FROM (
SELECT [Main Database].Renewal, [Main Database].[2014/15 - Initial Contact],
Count([Main Database].[2014/15 - Initial Contact])
AS [CountOf2014/15 - Initial Contact]
FROM [Main Database]
GROUP BY [Main Database].Renewal, [Main Database].[2014/15 - Initial Contact]
HAVING ((([Main Database].Renewal) Like "**/11/****") AND (([Main Database].[2014/15 - Initial Contact])="Yes"))
);
使用这个..
SELECT A.Renewal as Renewal ,
A.[2014/15 - Permission to Review] as Permission_to_Review,
IIF(isNull(Count(A.[2014/15 - Permission to Review])),0,Count(A.[2014/15 - Permission to Review])) AS count_Permission_to_Review
FROM [Main Database] A
where (((A.Renewal) Like "**/05/****") AND ((A.[2014/15 - Permission to Review])="Yes"))
GROUP BY A.Renewal, A.[2014/15 - Permission to Review]
;
在子查询上使用 COUNT(*):
SELECT COUNT(*) as NbRecords
FROM (
SELECT ...whatever you need
)
如果子查询为空,主查询会returnNbRecords = 0