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

Откуда:
Сообщений: 39
Добрый день!

помогите plz составить запрос, вычисляющий сумму значений транзакций между датами пришедших отчетов от оборудования

дано:
таблица otchet
--------------------
id int 4 - номер по порядку
apparat int 4 - номер аппарата
dt datetime 8 - дата и время отчета
--------------------
например
250 7 01.10.2005 13:57:30
251 10 29.09.2005 14:58:19
252 2 29.09.2005 15:37:42
253 3 29.09.2005 15:48:36
254 5 29.09.2005 16:31:52
255 7 01.10.2005 16:41:17
256 13 29.09.2005 16:55:15
257 6 29.09.2005 17:23:03
258 17 29.09.2005 18:24:30
259 14 30.09.2005 9:40:00
260 17 30.09.2005 16:15:34
261 7 01.10.2005 19:20:58


таблица data
----------------------
id int 4 - номер по порядку
trdatetime datetime 8 - дата и время транзакции
apparat int 4 - номер аппарата
take varchar 50 - - показания транзакции
----------------------

Например
40261 01.10.2005 16:32:06 7 100
40262 01.10.2005 16:33:06 5 10
40263 01.10.2005 16:34:06 7 100
40264 01.10.2005 16:35:06 7 10
40265 01.10.2005 16:36:06 6 100
40266 01.10.2005 16:37:06 7 20
40267 01.10.2005 16:38:06 1 10

Из таблицы otchet видно, что аппарат 7 присылал отчет 3 раза. Необходимо вычислить сумму полей take из таблицы data между временами из таблицы отчет

Спасибо
1 окт 05, 14:00    [1929808]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по хтирому селекту с групировкой  [new]
Adony
Member

Откуда: Москва
Сообщений: 1083
Покажите, что вы хотите на выходе
1 окт 05, 14:14    [1929829]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по хтирому селекту с групировкой  [new]
Andrey Leman
Member

Откуда:
Сообщений: 39
Мне нужно получить следующий результат:

7 01.10.2005 13:57:30 0
7 01.10.2005 16:41:17 230
7 01.10.2005 19:20:58 0

где 230 - это сумма (100+100+10+20) полей take из таблицы ot4et в период с 01.10.2005 13:57:30 по 01.10.2005 16:41:17 для аппарата номер 7

Заранее благодарен
Андрей.
5 окт 05, 07:26    [1938511]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по хтирому селекту с групировкой  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1873
declare @otchet table(id int,apparat int,dt datetime)
insert into @otchet values(250,7,'10.01.2005 13:57:30')
insert into @otchet values(251,10,'09.29.2005 14:58:19')
insert into @otchet values(252,2,'09.29.2005 15:37:42')
insert into @otchet values(253,3,'09.29.2005 15:48:36')
insert into @otchet values(254,5,'09.29.2005 16:31:52')
insert into @otchet values(255,7,'10.01.2005 16:41:17')
insert into @otchet values(256,13,'09.29.2005 16:55:15')
insert into @otchet values(257,6,'09.29.2005 17:23:03')
insert into @otchet values(258,17,'09.29.2005 18:24:30')
insert into @otchet values(259,14,'09.30.2005 9:40:00')
insert into @otchet values(260,17,'09.30.2005 16:15:34')
insert into @otchet values(261,7,'10.01.2005 19:20:58')

select * from @otchet

declare @data table(id int,trdatetime datetime,apparat int,take int)
insert into @data values(40261, '10.01.2005 16:32:06',7,100)
insert into @data values(40262, '10.01.2005 16:33:06', 5, 10)
insert into @data values(40263, '10.01.2005 16:34:06', 7, 100)
insert into @data values(40264, '10.01.2005 16:35:06', 7, 10)
insert into @data values(40265, '10.01.2005 16:36:06', 6, 100)
insert into @data values(40266, '10.01.2005 16:37:06', 7, 20)
insert into @data values(40267, '10.01.2005 16:38:06', 1, 10)
select * from @data

select o.id,o.apparat,o.dt,sum(isnull(d.take,0))
from @otchet o
left outer join @data d on d.apparat = o.apparat and trdatetime <= o.dt
and trdatetime >= (select max(dt) from @otchet where dt < o.dt)
group by o.id,o.apparat,o.dt


5 окт 05, 08:19    [1938549]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить