我已经创建了一个日历表格(带有索引),其中包含日期、星期几、会计年度、日期名称等。我的日历表格的范围是2005 - 2071年。在查询日程表时,我没有遇到任何问题。
我想使用日历表上的date列来过滤2个不同表上的2个不同的date列。
我遇到的问题是,当使用日程表上的日期列搜索较大的日期范围时(例如,2010-2019),返回结果需要很长时间。然而,如果我在每个表上查询相同的日期范围,结果将以秒为单位返回。下面是我正在使用的查询:
Select
a.Col1,
a.Col2,
a.Col3,
a.Date1,
b.Date1
From
TableA as A
FULL JOIN TableB as B
on A.Col1 = B.Col1
INNER JOIN TableCal as C
on A.Date1 = C.Date1
or B.Date1 = C.Date1
WHERE
C.date1 between '2010' and '2019'如果有更好的方式写这篇文章,或者如果我写错了,我愿意接受所有的意见/建议!谢谢!
发布于 2019-03-21 22:02:42
从形式上讲,答案是使用等值联接,如下所示:
Select a.Col1, a.Col2, a.Col3
From (a join
cal ca
on a.col2 = ca.col2
) full join
(b join
cal cb
on b.col2 = cb.col2
)
on a.col1 = b.col1
where ca.date between '2010' and '2019' or
cb.date between '2010' and '2019' ;https://stackoverflow.com/questions/55281775
复制相似问题