2010-01-13 31 views
1

我有一個表 「範圍」 一有以下的列如何在不使用光標的情況下檢查該範圍內的記錄的範圍和數量?

LowRange as int 
    HighRange as int 

類似於下面的數據

SELECT * FROM範圍

LowRange HighRange 
1   100 
101  200 
201  300 
. 
. 
. 
901  1000 

而另一臺 「infoDetails」與以下列

Range as INT 
amount as money 

與類似下面

選擇數據*從infoDetails

Range Amount 
23  34.00 
235  44.00 
345  34.00 
678  100.00 
555  100.00 
530  100.00 
510  100.00 

我需要一個報告,沒有光標的格式如下。

LowRange HighRange Count Amount 

1   100   1  34.00 
101   200   0  0.00 
. 
. 
501   600   3  300.00 
601   700   1  100.00 

您的建議,歡迎!

由於提前

Solai

回答

1

假設你的範圍是正確的,他們不重疊也沒有留空隙:

SELECT LowRange, HighRange, count(*), SUM(Amount) 
FROM Ranges r 
LEFT JOIN infoDetails d on d.Range between r.LowRange and r.HighRange 
GROUP BY LowRange, HighRange; 
+0

謝謝你,但這不是返回所有行Range表。 – solairaja 2010-01-13 07:37:48

+1

使用LEFT JOIN返回沒有詳細信息的範圍的行,我編輯了帖子 – 2010-01-13 07:43:30