Форум: "Базы";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];
ВнизСупер сложный запрос :) Найти похожие ветки
← →
Serg2002 (2002-09-12 10:30) [0]Есть две таблицы Т1 и Т2.
Первая таблица
TN – табельный номер
SUMA1 - сума начислений
Вторая таблица
TN – табельный номер
SUMA2 - сума удержаний
TN в каждой таблице не уникальный. Есть по нескольку одинаковых TN и соответственно сумма начислений или удержаний.
Та вот надо сделать запросик чтобы по каждому TN просуммировать начисления и удержания и еще найти разницу.
Что-то в роде.
select t1.tn, sum(t1.suma1) as nach, sum(t2.suma2) as uder, sum(t1.suma1)-sum(t2.suma2) as opl
from t1, t2
where t1.tn=t2.tn
group by t1.tn, t2.tn
Но результат получается неправильний. Или совсем не получается.
Использовать хранимые процедуры в IB нельзя. Запретили.
← →
Max Zyuzin (2002-09-12 10:51) [1]Ну первая же ошибка которую видно
group by t1.tn, t2.tn
У тебя поле t2.nt не присутствует в списке выбиваемых полей.. странно что оно вообще работало
← →
REA (2002-09-12 10:52) [2]Если значения некоторых полей NULL, то парадоксовый SQL будет игнорировать эти записи. Насчет IB не в курсе. Попробуй разбить на части и конкретезировать место ошибки.
← →
ЮЮ (2002-09-12 10:57) [3]select * from
(select tn nachtn, Sum(suma1) snach from t1 group by tn) nach
full join
(select tn udertn, Sum(suma2) suder from t2 group by tn) uder
on nachtn=udertn
← →
Melov (2002-09-12 10:59) [4]Мне кажется надо так:
SELECT nach, uder, nach-uder
FROM
( select SUM(Summa1) as nach from T1 group by TN ) A
OUTER JOIN
( select SUM(Summa2) as uder from T2 group by TN ) B
ON A.TN = B.TN
← →
Max Zyuzin (2002-09-12 11:00) [5]>ЮЮ ©
Если я ничего не путаю.. то в Paradox-е селекты из селектов не работают.
← →
ЮЮ (2002-09-12 11:03) [6]В дополнение, у меня синтаксис МS SQL.
В качестве пояснения. Начисления и удержания должны считаться в отдельных запросах, иначе неизбежно многогратное включение одного и того же начислени (удержания) в результирующую выборку
← →
Max Zyuzin (2002-09-12 11:07) [7]select * from (select * from mytable)
Такая конструкция не работает ни в Paradox ни в IB
← →
elektro (2002-09-12 11:22) [8]>Использовать хранимые процедуры в IB нельзя. Запретили.
Это почему же ? С ней как раз все и получится.
← →
ЮЮ (2002-09-12 11:23) [9]>ни в Paradox ни в IB
А говрят IB - Cepвер !!!
Тогда рез-ты подзапросов -> во временные таблицы.
А такое IB хотя бы поддерживает?
select * from
"nach.sql" nach
full join
"uder.sql" uder
on nachtn=udertn
← →
Johnmen (2002-09-12 11:25) [10]SELECT A1.TN,
(SELECT SUM(A2.SUMA1) FROM T1 A2 WHERE A1.TN=A2.TN) F2,
(SELECT SUM(A3.SUMA2) FROM T2 A3 WHERE A1.TN=A3.TN) F3
FROM T1 A1
GROUP BY A1.TN
F2-начисления, F3-удержания
Работает железно в IB...Но один нюанс - если для какого-то ТН есть удержания, но нет начислений, то этот ТН в выборку не попадет (естественно)...
← →
ЮЮ (2002-09-12 11:32) [11]>если для какого-то ТН есть удержания, но нет начислений, то этот ТН в выборку не попадет (естественно)...
Что же здесь естественного? И почему не попадет?
← →
Johnmen (2002-09-12 11:36) [12]>ЮЮ © (12.09.02 11:32)
Предлагаю подумать самому....:^)))
← →
ЮЮ (2002-09-12 11:43) [13]Johnmen © (12.09.02 11:36) Понял :-)
← →
Serg2002 (2002-09-12 12:54) [14]>Johnmen © (12.09.02 11:25)
Етот вариант пока полностью устраивает.
Спасибо!
SELECT A1.TN,
(SELECT SUM(A2.SUMA1) FROM T1 A2 WHERE A1.TN=A2.TN) F2,
(SELECT SUM(A3.SUMA2) FROM T2 A3 WHERE A1.TN=A3.TN) F3
FROM T1 A1
GROUP BY A1.TN
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c