首先我有2张桌子 -
我们要做的第一件事是左连接 - 如果主输出表匹配替换表上的任何地理编码,它会将它们交换掉。
但是我们在主输出表中有3列可以使用地理编码:
这决定了很多因素,具体取决于地理位置的放置位置。
现在是踢球者:地理编码替换表有两个例外,虽然地理编码与城市相关,但它需要进入状态。它们是特殊例外。所以我做了一个复选框来标记它们。
对于这些复选框的异常 - 我希望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]"
非常感谢任何帮助!
答案 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]