2010-09-25 104 views
1

總結不穩定的行業我有交易,其中包括了數量,tradeDate和settlementDate高效的SQL查詢的日期

領域我想回到一個表,由所有日期分組的總結欠繳稅款字段的表。

對於某一特定日期查詢是:要做到這一點

select sum(amount) 
from trades 
where tradeDate <= @Date and settlementDate > @Date 

一種方式是(簡化):

select date, 
(select sum(amount) from trades where tradeDate <= Date and settlementDate > Date) 
from AllDates 

有沒有更有效的方式來做到這一點?我認爲子查詢會降低速度?

謝謝你的幫助。

回答

3

有了一個普通的加盟:

SELECT AllDates.date, SUM(trades.amount) 
FROM AllDates 
JOIN trades 
    ON trades.tradeDate<=AllDates.date 
    AND trades.settlementDate>AllDates.date 
GROUP BY AllDates.date 
+0

謝謝,我想這應該是很明顯。有時我會迷惑自己 – 2010-09-25 10:12:12