VB中的SQL语句加入区号

时间:2013-05-02 16:48:26

标签: sql vb.net

首先我有2张桌子 -

  1. 主要输出表
  2. 地理代码更换/更正表
  3. 我们要做的第一件事是左连接 - 如果主输出表匹配替换表上的任何地理编码,它会将它们交换掉。

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

    1. zipCity
    2. zipState
    3. zipNation
    4. 这决定了很多因素,具体取决于地理位置的放置位置。

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

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

      我最大的问题:使用下面的SELECT编码,它一直给我一个抱怨运算符的语法错误。但我已经对这一百万次进行了三次检查,而且我的印象是它不喜欢单列选择中的多个AS [列名]语句。

      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]" 
      

      非常感谢任何帮助!

1 个答案:

答案 0 :(得分: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]