2014-12-05 71 views
0

对表1中的日期在表2中的2列日期之间编码SQL以获取表1中的记录的最佳方式是什么?表2中2列之间的表1的SQL日期

喜欢的东西

SELECT INVOICE.* from INVOICE, CYCLE 
Where 
INVOICE.inv_date BETWEEN cycle.start_date and cycle.end_date 

周期表只有一个排,和改变夜间。

INVOICE表有600万张发票可以追溯多年。

我正在寻找(a)效果很好,(b)有效的东西。

回答

0

正如你所说,Cycle表只有一行

你可以在变量的开始日期和结束日期,并做select而不是用cycle

declare @start_date datetime 
declare @end_date datetime 

select @start_date = start_date, @end_date = end_date FROM Cycle 

-- select required columns instead of all 

SELECT invoice.inv_date .. 
FROM INVOICE 
WHERE INOVICE.inv_date between @start_date and @end_date 
+0

啊加盟,我忘了提到一个细节。这是用于ETL应用程序的SQL,因此它只是直连SQL。没有声明,没有变量,没有多重选择语句。 “Source”SQL就是这样。那么鉴于此,在单个SQL语句中执行此操作的最佳方式是什么? – 2014-12-08 16:54:27