我正在尝试创建一个查询,将税率纳入整个美国的交易中。我遇到的问题是,有多个州拥有相同的县和城市,并且提取不同的费率。示例Decatur TX将提取Decatur AL率。我该怎么做才能阻止这个?
SELECT
Query1.STORE_NUM, Query1.ST_CD,
Query1.[Juris Cd], Query1.CITY_NM, Query1.[Document Date],
Query1.[Amount in local currency], Query1.[Rental Tax],
Query1.[State Rate], Query1.[County Rate],
IIf(IsNull([City_Rates].[City_Rate]),0,[City_Rates].[City_Rate]) AS [City Rate]
FROM
Query1 LEFT JOIN City_Rates ON Query1.CITY_NM = City_Rates.City
WHERE
(((Query1.ST_CD)="GA"));
答案 0 :(得分:2)
据推测,每个表中都有一个州代码,所以你也应该join
:
FROM Query1 LEFT JOIN
City_Rates
ON Query1.CITY_NM = City_Rates.City AND
Query1.ST_CD = City_Rates.ST_CD
我认为当两个引用表时,访问将允许on
中left join
的多个条件。如果没有,则近似为:
FROM Query1 LEFT JOIN
City_Rates
ON Query1.CITY_NM = City_Rates.City
WHERE (Query1.ST_CD = City_Rates.ST_CD or City_Rates.City IS NULL)
答案 1 :(得分:1)
您基于名称加入City
。但名称不足以唯一地标识一个城市。
如果City
和transactions表都包含状态,则可以加入两列:
LEFT JOIN City_Rates
ON Query1.CITY_NM = City_Rates.City
AND Query1.ST_CD = City_Rates.StateCode