T-SQL для группировки результатов по диапазону возможных значений

Не знаю, как сформулировать вопрос:

У меня есть запрос, например

SELECT s.*
FROM SUMMARY s
WHERE s.TYP = 'A'
AND s.NUM > 0
AND s.NUM <= 999999

и группа по лайку

SELECT s.TYP, s.COUNT(TYPE)
FROM SUMMARY s
GROUP BY s.TPY

который дает:

A 38720
B 39500
C 170
D 850
E 8891

То, что я хотел бы сделать, это получить «разделение» моих результатов, используя «диапазон», например:

TYP RANGE(NUM) COUNT
  A 0000>1000  240
  A 1000>2000  800
  A 2000>3000  120
etc...

Есть ли простой способ сделать это?


person BlueChippy    schedule 16.09.2012    source источник


Ответы (1)


Посмотрите на IF в команде SELECT, чтобы сгруппировать по диапазонам, которые у вас есть в строках, а затем PIVOT, чтобы перевернуть результат.

person Alpha01    schedule 16.09.2012
comment
Вы хотите использовать CASE в SELECT? Я не понимаю, как получить это в результирующем наборе, который можно PIVOTировать? - person BlueChippy; 16.09.2012
comment
да, КЕЙС. Итак, сначала вы создаете таблицу со столбцами Range0To100, Range100To200 и т. д., каждая строка которых будет иметь только одно значение. Из этой таблицы вы создаете другую таблицу, которая суммирует столбцы из предыдущей таблицы, а затем переворачиваете ее с помощью PIVOT. Все можно сделать в одном SQL, используя select xx from (select xxx ) t. - person Alpha01; 16.09.2012