Текущий архив: 2006.12.31;
Скачать: CL | DM;
ВнизБезвыходное положение. Помогите с запросом. Найти похожие ветки
← →
RebroFF (2006-10-20 10:47) [0]Доброе утро всем. Вопрос к тем, кто силён в SQL. Помогите, пожалуйста, построить запрос. В таблице есть поля:nomer, vid,summa. Нужно сделать выборку записей, группируя по полю nomer, отвечающих следующему критерию:величина, равная разности сумм значений поля summa для vid равного 18,35,01 и т.д., и сумм значений поля summa для vid равного 40, должна быть больше 1000. Каждая величина расчитывается в пределах группы по полю nomer. Я-новичок в этом. Уже голова квадратная, а ничего не выходит.:)
Вот мои потуги:
select nomer,mtb60."sum",sum(IIF(inlist(vid,01,18,35,12,32,15,38),mtb60."sum",0)) - SUM(IIF(inlist(vid,40),mtb60."sum",0))
from mtb60
group by nomer,mtb60."sum"
having sum(IIF(inlist(vid,01,18,35,12,32,15,38),mtb60."sum",0)) - SUM(IIF(inlist(vid,40),mtb60."sum",0))>1000
BDE выдаёт ошибку "Cappability not supported".
← →
ЮЮ © (2006-10-20 10:55) [1]IIF, inlist - какой движок используешь?
← →
MsGuns © (2006-10-20 10:55) [2]Вы написали запрос по стандарту TSQL (IIF), а BDE поддерживает Local SQL, где такого оператора нет.
← →
ЮЮ © (2006-10-20 11:15) [3]Успокойся. Получить такое в БДЕ одним запросом - и не новичку достаточно сложно.
01,18,35,12,32,15,38 - это все виды, исключая 40? Или есть еще, но в запросе не участвуют?
Если по виду 40 вообще нет данных, то считать их 0 или игнорировать вообще?
← →
RebroFF (2006-10-20 11:44) [4]
> 01,18,35,12,32,15,38 - это все виды, исключая 40
Да. Все.
> Если по виду 40 вообще нет данных, то считать их 0 или игнорировать
> вообще?
Игнорировать.
Извините за задержку с ответом:)
← →
ЮЮ © (2006-10-20 11:47) [5]БДЕ?
← →
RebroFF (2006-10-20 11:49) [6]Да. Программа на Delphi. Набор данных в Query.
← →
Johnmen © (2006-10-20 11:53) [7]Примерно так
SELECT ... FROM Table T1
WHERE 1000 <
(SELECT SUM(T2.summa) FROM Table T2
WHERE T2.vid IN (01,18,35,12,32,15,38) AND T2.nomer=T1.nomer) -
(SELECT SUM(T3.summa) FROM Table T3
WHERE T3.vid IN (40) AND T3.nomer=T1.nomer)
← →
RebroFF (2006-10-20 11:56) [8]2Johnmen
Извините, не совсем понял, что такое Т1,Т2,Т3?
← →
ЮЮ © (2006-10-20 12:01) [9]Создаем две вьюшки:
sumNot40.sql:SELECT nomer, SUM(mtb60."sum") Summ
FROM mtb60
WHERE vid <> 40
GROUP BY nomer
и sum40.sql сWHERE vid = 40
Теперь в Query пишем
SELECT
a.nomer, a.Summ SummA, b.Summ SummB, a.Summ - b.Summ SummAB
FROM
"sumNot40.sql" a
JOIN "sum40.sql" b ON a.nomer = b.nomer
WHERE
a.Summ - b.Summ > 1000
← →
RebroFF (2006-10-20 12:04) [10]
> ЮЮ © (20.10.06 12:01) [9]
Спасибо. Буду реализовывать.
← →
Johnmen © (2006-10-20 12:17) [11]
> RebroFF (20.10.06 11:56) [8]
> Извините, не совсем понял, что такое Т1,Т2,Т3?
Псевдонимы таблицы.
Страницы: 1 вся ветка
Текущий архив: 2006.12.31;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.044 c