0

我有n 个MS Access 字段,需要每行检查一个合法单元格。合法单元格根本没有值“缺失”、“未知”;或不为空。所有这些单元格将组合成一个字段,该字段仅包含具有合法值的单元格。

参考下表,

考文

Name_Final将包含来自 和 的这些合法Name_2010单元Name_2011Name_2012

我已经有两个单独的查询来帮助我完成这项工作,但我需要结合它们的结果才能获得该Name_Final字段。

  1. 返回非空或非空单元格的查询

     SELECT 
         Nz(Name_2010, '') & 
         Nz(Name_2011, '') & 
         Nz(Name_2012, '') 
         AS Name_Final
    

结果是:

coven-query-1

  1. 过滤具有不需要值的单元格

     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值或分别为空白值。

它的输出是:

coven-query-2

我需要找到一种方法将这两组查询整合在一起以提出Name_Final.

4

1 回答 1

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)', '');
于 2013-10-12T11:52:04.367 回答