Форум: "Потрепаться";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];
ВнизПодскажите как оптимизировать запрос... Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c