Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.12;
Скачать: CL | DM;

Вниз

Подскажите как оптимизировать запрос...   Найти похожие ветки 

 
diokant   (2003-05-26 10:52) [0]

есть 2 табл
1-tmp02
cod_uu-код , date_s-дата начала интересуемого периода, date_f-дата конца интересуемого периода

2-tmp04
cod_uu-код , datevatt1-дата начала периода, datevatt2-дата конца периода, c.znth-значение за период

нужно получить сумму за интересуемые периоды

Так работает:

select a.*,
(select sum(c.znth) from tmp04 c
where ( (a.date_s<=c.datevatt1) and (a.date_F>=c.datevatt2)
and (a.cod_uu=c.cod_uu)))
as dataItog from tmp02 a

Но меня не устраивает скорость...
Подскажите, что можно сделать?


 
stone ©   (2003-05-26 11:02) [1]

select a.*, sum(c.znth) as dataItog from tmp02 a inner join tmp04 c on a.cod_uu=c.cod_uu where a.date_s <= c.datevatt1 and a.date_F >= c.datevatt2


 
diokant   (2003-05-26 11:17) [2]

<select a.*, sum(c.znth) as dataItog from tmp02 a inner join tmp04 c on a.cod_uu=c.cod_uu where a.date_s <= c.datevatt1 and a.date_F >= c.datevatt2>

так не работает...

Server: Msg 8118, Level 16, State 1, Procedure Calc_interval_mosh_UU_0101, Line 177
Column "a.cod_uu" is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.
Server: Msg 8118, Level 16, State 1, Procedure Calc_interval_mosh_UU_0101, Line 177
Column "a.date_s" is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.
Server: Msg 8118, Level 16, State 1, Procedure Calc_interval_mosh_UU_0101, Line 177
Column "a.date_f" is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.


 
Johnmen ©   (2003-05-26 11:20) [3]

Неясно предназначение первой таблицы в рамках контекста вопроса...


 
diokant   (2003-05-26 11:30) [4]

первая таблица временая - в ней строки соответствуют периодам, за которые необходимо получить значения.

2-я содержит значения, но интервалы меньше или равны интересуемым.
(т.е. в первой интересуемые к примеру за сутки, а во второй интервалы по пол часа, и все соответственно для своих cod_uu)


 
stone ©   (2003-05-26 11:37) [5]


> and there is no GROUP BY clause.


Потому что в конце нужно еще добавить GROUP BY


 
diokant   (2003-05-26 14:38) [6]

Да так где-то в 4 раза быстрее...

select a.*,
sum(c.znth) as dataItog
from tmp02 a left join tmp04 c on a.cod_uu=c.cod_uu
where a.date_s <= c.datevatt1 and a.date_F >= c.datevatt2 group by a.cod_uu, plus_minus, date_s, date_f, ninterval

Спасибо...



Страницы: 1 вся ветка

Текущий архив: 2003.06.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
1-34798
a72
2003-05-29 10:39
2003.06.12
Обработка событий в своем компоненте


9-34661
[Baradoo]
2003-01-05 20:21
2003.06.12
Как сделать редактор карт типа как В Heroes III?


1-34902
Andrey02
2003-06-01 13:13
2003.06.12
Полностью раздвинуть приложение на весь экран


14-34985
alxx
2003-05-21 16:17
2003.06.12
С принтером через порт.


14-35060
Kooler
2003-05-28 00:27
2003.06.12
Мож кто скажет где найти компонент Pcolor