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

Откуда:
Сообщений: 12
Есть простая таблица из трех полей

1. Дата и время (datetime)
2. Код операции (op int)
3. Время операции (t int)

Нужно сделать функцию с параметрами @d1, @d2 datetime, которая бы выводила данные между d1 и d2 в таком виде:

1. Код операции
2. Количество операции с временем 0-5
3. Количество операции с временем 6-10
4. Количество операции с временем 11-15
............................
10. Количество операции с временем 400-500

Вся эта конструкция работает сейчас в Акцессе, но там она делается в 2 запроса. Примерно так:

Запрос1:
автор
SELECT op, iif(t<=5;1) AS pole0, iif (t>=6 AND t<=10;1) AS pole5...


Запрос2:
автор
SELCT op, SUM(pole0), SUM(pole5)...


Но все работает сильно медленно, и формирует отчет около минуты.

Можно ли как-то реализовать это через серверную функцию, которой передавать только параметры и получать на выходе таблицу. И как в одну функцию затолкать два запроса?
21 май 16, 17:02    [19202354]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить несколько запросов в функции  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
select
  op
  , sum( case when              t <=  5  then 1 else 0 end )
  , sum( case when  t > 5   and t <= 10  then 1 else 0 end )
  , sum( case when  t > 10  and t <= 15  then 1 else 0 end )
...
  , sum( case when  t > 399 and t <= 500 then 1 else 0 end )
...


Сообщение было отредактировано: 21 май 16, 17:08
21 май 16, 17:07    [19202371]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить несколько запросов в функции  [new]
scorpy
Member

Откуда:
Сообщений: 12
Большое спасибо!
21 май 16, 21:07    [19202909]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить