给出两个查询,将Access字段组合到一个字段中

时间:2013-10-12 11:13:24

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

我有 n MS Access字段,需要每行检查一个合法单元格。法律单元格根本没有价值"缺少","未知&#34 ;;或者不是空白。所有这些单元格将合并为一个仅包含具有合法值的单元格的字段。

参考下表,

coven

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
    
  2. 结果是:

    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;
      
    2. 对于0括号中指示的值,-1括号中未指明的值或空值分别为{}返回NOT INNOT IN或空白。< / p>

      它的输出是:

      coven-query-2

      我需要找到一种方法将这两组查询集成在一起以提出Name_Final请帮助SO Overlords。

1 个答案:

答案 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)', '');