我正在尝试加入四个表,我收到错误'加入表达式中的语法错误'
请在下面找到我目前正在尝试编写的查询
SELECT a.*,
switch(a.[Start Date] between b.[SEASON1START] and b.[SEASON1END],b.[LRA_S1_RT1_SGL],
a.[Start Date] between c.[SEASON1START] and c.[SEASON1END],c.[LRA_S1_RT1_SGL],
a.[Start Date] between d.[SEASON1START] and d.[SEASON1END],d.[LRA_S1_RT1_SGL]) as [Negotiated Rate Local],
switch(a.[Start Date] between b.[SEASON1START] and b.[SEASON1END],
b.[RATE_CURR],a.[Start Date] between c.[SEASON1START] and c.[SEASON1END],c.[RATE_CURR],
a.[Start Date] between d.[SEASON1START] and d.[SEASON1END],d.[RATE_CURR]) as [Negotiated Currency]
FROM ((([Q1001 - Split Transactions] a
left join [2014 Negotiated Rate] b on (a.[RX_ID] = b.[PROPCODE] And YEAR(a.[Start Date] = 2014))
left join [2015 Negotiated Rate] c on (a.[RX_ID] = c.[PROPCODE] And YEAR(a.[Start Date] = 2015))
left join [2016 Negotiated Rate] d on (a.[RX_ID] = d.[PROPCODE] And YEAR(a.[Start Date] = 2016)) ;
答案 0 :(得分:2)
MS Access不允许RewriteRule
子句中的常量。解决方案?切换到更好的数据库。等一下。这不是一个选择。所以,救援的子查询:
on
答案 1 :(得分:1)
您的原始查询应该有效。在MS Access中,您可以在ON
子句中使用WHERE
子句中的表达式(尽管仅在 SQL视图中的设计视图中无法查看复杂的表达式)。
具体来说,您没有正确包装YEAR()
功能。请考虑以下调整:
FROM ((([Q1001 - Split Transactions] a
left join [2014 Negotiated Rate] b
on (a.[RX_ID] = b.[PROPCODE] And YEAR(a.[Start Date]) = 2014))
left join [2015 Negotiated Rate] c
on (a.[RX_ID] = c.[PROPCODE] And YEAR(a.[Start Date]) = 2015))
left join [2016 Negotiated Rate] d
on (a.[RX_ID] = d.[PROPCODE] And YEAR(a.[Start Date]) = 2016));