表1中的SQL的日期在表2中的2列之间

时间:2014-12-05 18:03:59

标签: sql sql-server-2012

编写SQL以获取表1中记录的最佳方法是什么,表1中的日期在表2中的2个列日期之间?

这样的东西
SELECT INVOICE.* from INVOICE, CYCLE
Where
INVOICE.inv_date BETWEEN cycle.start_date and cycle.end_date

Cycle表只有一行,每晚都会更改。

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

我正在寻找(a)运作良好,(b)效率高的东西。

1 个答案:

答案 0 :(得分: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