【问题标题】:Combine Access fields into one field given two queries给定两个查询,将 Access 字段合并为一个字段
【发布时间】:2013-10-20 10:34:59
【问题描述】:

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

参考下表,

Name_Final 将包含来自Name_2010Name_2011Name_2012 的合法单元格。

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

  1. Query that returns non-null or non-empty cells

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

结果是:

  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;
    

对于NOT IN 括号中指示的值、NOT IN 括号中未指示的值或空白值,此选项分别返回0-1 或空白。

它的输出是:

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

【问题讨论】:

    标签: sql database ms-access vba ms-access-2010


    【解决方案1】:
    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)', '');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-17
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-17
      相关资源
      最近更新 更多