返回访问记录与零,而不是空
问题描述:
这里的问题:返回访问记录与零,而不是空
我有一个Access查询为食的报告,有时不能对某些标准返回任何记录。我想在报告中显示零而不是空行(当前正在返回空记录集)。 如果没有来自初始查询的匹配记录,是否有SQL解决方案(可能使用某种联合语句和/或嵌套SQL)总是返回一个记录(带零)?
答
一个可能的解决方案是创建具有相同主键的第二个表,并添加一条记录。在你的查询中,选择第二个表中的所有记录作为连接类型,包括第一个表中没有匹配记录的那些记录。选择第一个表中的所有字段作为输出。
答
您可以为所有列实现零行为的一行表。在Access(ACE,Jet等)中实现这个轻微的痛苦是因为它不支持行构造函数,并且FROM
必须解析为基表。换句话说,你需要一个保证至少包含一行的表格。
这对我来说不是问题,因为我的数据库中始终包含辅助表,例如一个calendar table,整数,等等。〔实施例的序列表,兑现一张桌子一排,全零表使用我行3000万年历表:
SELECT DISTINCT 0 AS c
FROM Calendar;
我可以再UNION
我与物化表查询但包括antijoin,以确保全零行只出现在结果的时候我的查询是空集:
SELECT c
FROM T
UNION
SELECT 0
FROM Calendar
WHERE NOT EXISTS (
SELECT c
FROM T
);
注意使用UNION
让我删除DISTINCT
关键字和AS
条款(“列别名“)来自物化表。