Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с запросом по выборке статистических данных...  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
Необходимо получить таблицу следующего вида:
Наименование|Диапазон 1-10| Диапазон 11-17|Диапазон 18-22| и т.д.
-----------------------------------------------------------------------
Индикатор1__|значение1____|значение2_____|значение3_____|значение4|
Индикатор2__|и т.д.
...
ИндикаторN|

Данные хранятся в одной таблице, например
значение1 = select count(*) from table where name = 'Индикатор1__' and (диапазон >=1) and (диапазон <10) and некоторые_другие_условия_по_полям...
значение2 = select count(*) from table where name = 'Индикатор2__' and (диапазон >=1) and (диапазон <10) and некоторые_другие_условия_по_полям...
значение3 = select count(*) from table where name = 'Индикатор3__' and (диапазон >=1) and (диапазон <10) and некоторые_другие_условия_по_полям...


И собственно вопрос, реально ли объединить выборку в один select ? или для каждой ячейки строить отдельный запрос?

Можно попробовать таким способом...
Select 
a = (select ...),
b = (select ...)
from table
union all
Select 
a = (select ...),
b = (select ...)
from table


А есть ли еще более универсальные способы? Посоветуйте пожалуйста.
16 окт 12, 09:47    [13324357]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом по выборке статистических данных...  [new]
Glory
Member

Откуда:
Сообщений: 104760
Алексей Кр
А есть ли еще более универсальные способы?

SUM(CASE WHEN name = 'Индикатор1__' and (диапазон >=1) and (диапазон <10) and некоторые_другие_условия_по_полям... THEN 1 END),
SUM(CASE WHEN name = 'Индикатор2__' and (диапазон >=1) and (диапазон <10) and некоторые_другие_условия_по_полям... THEN 1 END), ...
16 окт 12, 09:50    [13324372]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом по выборке статистических данных...  [new]
Алексей Кр
Member

Откуда: Белгород
Сообщений: 458
Извиняюсь, вдогонку
копипаст губит всё (((

значение1 = select count(*) from table where name = 'Индикатор1__' and (диапазон >=1) and (диапазон <=10) and некоторые_другие_условия_по_полям...
значение2 = select count(*) from table where name = 'Индикатор2__' and (диапазон >=11) and (диапазон <=17) and некоторые_другие_условия_по_полям...
значение3 = select count(*) from table where name = 'Индикатор3__' and (диапазон >=18) and (диапазон <=22) and некоторые_другие_условия_по_полям...
16 окт 12, 09:50    [13324376]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить