我试着四处寻找但找不到任何可以帮助我的东西。
SELECT COL1,* FROM TAB1 A
JOIN TAB2 b ON A.ID=B. ID
INNER JOIN TAB3 C ON C.AsOf=A.AsOf
WHERE
B.AsOf BETWEEN
(
CASE WHEN C.DayOfWeek = 7 AND C.IsCalendarMonthEnd = 'Y'
THEN DATEADD(dd,-1,C.PreviousCalendarDay) AND DATEADD(dd,+1,C.AsOf)
END
)
我收到错误,例如'关键字'AND''附近的语法不正确 我需要根据案件陈述找到日期之间的日期
如果可能的话?
答案 0 :(得分:1)
不幸的是,来自Oracle的错误消息(您没有说明您正在使用哪个数据库服务器)可能会令人不知道错误的位置。
问题在于:
JOIN TAB2 b ON A.ID=B. ID AND
INNER JOIN TAB3 C ON C.AsOf=A.AsOf
你不希望AND
在那里。这是语法错误。
答案 1 :(得分:1)
您的WHERE
条款存在问题。您不能一次性在BETWEEN
中指定CASE
运算符的两个边界。可能你的意思是:
…
WHERE C.DayOfWeek = 7
AND C.IsCalendarMonthEnd = 'Y'
AND B.AsOf BETWEEN DATEADD(dd,-1,C.PreviousCalendarDay) AND DATEADD(dd,+1,C.AsOf)