0

所以首先我有两张桌子-

  1. 主输出表
  2. 地理编码替换/更正表

我们要做的第一件事是左连接 - 如果主输出表与替换表上的任何地理编码匹配,它会将它们换出。

但是,我们在主输出表中有 3 列可以用于地理编码:

  1. 拉链城市
  2. 压缩状态
  3. 拉链国

这取决于地理编码的放置位置,这决定了许多因素。

现在最重要的是:地理编码替换表有 2 个例外,虽然地理编码与城市相关,但它需要进入状态。它们是特殊的例外。所以我做了一个复选框来标记它们。

对于这些带有复选框的异常 - 我希望 SQL/SELECT 语句检查复选框是否被选中,如果是 - 将其标记为 ZIPSTATE。如果没有标记,请将其保留为 ZIPCITY。

我最大的问题:使用下面的 SELECT 编码,它不断给我一个语法错误,抱怨一个运算符。但是我已经三次检查了这一百万次,我真的觉得它不喜欢单个列选择中的多个 AS [Column Name] 语句。

qdQuery.SQL = "SELECT IIf(Input.ZIPCITY Is Not Null, IIf(Input.ZIPCITY=[Geocodes].
    [ReplaceGeocode],IIf([Geocodes].[ExceptionChkBox],[Geocodes]![ReplacementGeocode] 
    AS [ZIP STATE], [Geocodes]![ReplacementGeocode] AS [ZIP CITY]), Input.ZIPCITY AS 
     [ZIP CITY]), Input.GEOCITY As [ZIP CITY])" _
    & " FROM  Input LEFT JOIN [Geocodes] ON Input.ZIPCITY=[Geocodes].[ReplaceGeocode] 
       Or Input.ZIPSTATE=[Geocodes].[ReplaceGeocode] Or Input.ZIPNATION=[Geocodes].
      [ReplaceGeocode]" 

任何帮助深表感谢!

4

1 回答 1

0

我对 Access 并不太熟悉,但这样的东西应该可以工作:

SELECT 
    IIf(Input.ZIPCITY Is Not Null, 
        IIf(Input.ZIPCITY=[Geocodes].[ReplaceGeocode],
            IIf([Geocodes].[ExceptionChkBox],
                Null, 
                [Geocodes]![ReplacementGeocode]
            ), 
            Input.ZIPCITY), 
        Input.GEOCITY
    ) As [ZIP CITY],

    IIf(Input.ZIPCITY Is Not Null, 
        IIf(Input.ZIPCITY=[Geocodes].[ReplaceGeocode],
            IIf([Geocodes].[ExceptionChkBox],
                [Geocodes]![ReplacementGeocode],
                Null
            ), 
            Null), 
        Null
    ) As [ZIP STATE]
FROM
    Input 
    LEFT JOIN [Geocodes] 
    ON Input.ZIPCITY = [Geocodes].[ReplaceGeocode] 
    Or Input.ZIPSTATE = [Geocodes].[ReplaceGeocode] 
    Or Input.ZIPNATION = [Geocodes].[ReplaceGeocode]
于 2013-05-02T19:26:49.030 回答