我有 n MS Access字段,需要每行检查一个合法单元格。法律单元格根本没有价值"缺少","未知&#34 ;;或者不是空白。所有这些单元格将合并为一个仅包含具有合法值的单元格的字段。
参考下表,
Name_Final
将包含来自Name_2010
,Name_2011
和Name_2012
的这些合法单元格。
我已经有两个单独的查询来帮助我完成这项工作,但我需要结合他们的结果才能获得Name_Final
字段。
Query that returns non-null or non-empty cells
SELECT
Nz(Name_2010, '') &
Nz(Name_2011, '') &
Nz(Name_2012, '')
AS Name_Final
结果是:
过滤具有不良值的单元格
SELECT
Name_2010 Not In ('missing', 'unknown', 'Blank(s)', ' ', Nz),
Name_2011 Not In ('missing', 'unknown', 'Blank(s)', ' ', Nz),
Name_2012 Not In ('missing', 'unknown', 'Blank(s)', ' ', Nz)
AS Name_Final
FROM Table1;
对于0
括号中指示的值,-1
括号中未指明的值或空值分别为{}返回NOT IN
,NOT IN
或空白。< / p>
它的输出是:
我需要找到一种方法将这两组查询集成在一起以提出Name_Final
。请帮助SO Overlords。
答案 0 :(得分:0)
SELECT IIf(Name_2010 In (Null, 'missing', 'unknown', 'Blank(s)', ' '), '', Name_2010) &
IIf(Name_2011 In (Null, 'missing', 'unknown', 'Blank(s)', ' '), '', Name_2011) &
IIf(Name_2012 In (Null, 'missing', 'unknown', 'Blank(s)', ' '), '', Name_2012)
AS Name_Final
FROM Table1;
那就是说,我倾向于只清理数据并用NULL替换所有'缺失','未知'或'空白'值,这样就可以用简单的Nz替换IIf -
UPDATE Table1 SET Name_2010 = Null WHERE Trim(Name_2010) In ('missing', 'unknown', 'Blank(s)', '');
UPDATE Table1 SET Name_2011 = Null WHERE Trim(Name_2011) In ('missing', 'unknown', 'Blank(s)', '');
UPDATE Table1 SET Name_2012 = Null WHERE Trim(Name_2012) In ('missing', 'unknown', 'Blank(s)', '');