2010-01-13 1 views
1

У меня есть таблица "ДИАПАЗОН" со следующими столбцамиКак проверить диапазон и количество записей в этом диапазоне без использования курсора?

LowRange as int 
    HighRange as int 

с данными аналогичных ниже

выберите * от диапазонов

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

спасибо, но это не возвращает все строки таблицы диапазонов. – solairaja

+1

Используйте LEFT JOIN, чтобы возвращать строки для диапазонов, которые не имеют деталей, я отредактировал сообщение –