Вниз
Скачать: CL | DM;

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

 
Just_Dont_Know   (2002-10-28 16:25) [0]

Доброго всем дня! Помогите пожалуйста с запросом. Если все упростить, то получится следующая картина

Есть 2 одинаковый таблицы:

[Boly]
F_ID - не ключ
How

[Doly]
F_ID - не ключ
How

Надо получить набор данных состоящий из одного столбца:
F_ID,
в котором содержатся только те F_ID для которых разница сумм: SUM(Boly.How) - Sum (Doly.How) > 0.

Вот я сделал 4-хэтажный запрос:


SELECT S5.F_ID FROM (

SELECT S4.F_ID, SUM (s4.SUMA) AS [SUMA2] FROM (

SELECT S2.F_ID, SUM(S2.How) AS [SUMA] FROM Boly S2 GROUP BY S2.F_ID
UNION ALL ( SELECT S3.F_ID, SUM(S3.How*(-1)) AS [SUMA] FROM Doly S3 GROUP BY S3.F_ID )

) S4
GROUP BY S4.F_ID

) S5

WHERE SUMA2 > 0

А можно попроще как нибудь попроще... никак не сооброжу


 
stone ©   (2002-10-28 16:53) [1]

Есть такое классное слово HAVING - очень подходит для составления подобных запросов. Синтаксис можно посмотреть в хэлпе


 
MVF   (2002-10-28 16:53) [2]

select boly.f_id, sum(boly.how)-sum(doly.how) as summa
from boly, doly
where boly.f_id = doly.f_id
group by boly.f_id
having sum(boly.how)-sum(doly.how) > 0

Удачи!


 
3JIA9I CyKA ©   (2002-10-28 16:54) [3]

Ку?

select
F_ID = q.D_ID
from
(select
F_ID = IsNull(B.F_ID, D.F_ID),
D_How = IsNull(D.How, 0),
B_How = IsNull(B.How)
from Boly B full join Doly D on B.F_ID = D.F_ID
) q
having sum(q.B_How - q.D_How) > 0


 
3JIA9I CyKA ©   (2002-10-28 16:55) [4]

Sorry

select
F_ID = q.D_ID
from
(select
F_ID = IsNull(B.F_ID, D.F_ID),
D_How = IsNull(D.How, 0),
B_How = IsNull(B.How, 0)
from Boly B full join Doly D on B.F_ID = D.F_ID
) q
having sum(q.B_How - q.D_How) > 0


 
3JIA9I CyKA ©   (2002-10-28 16:59) [5]

Sorry опять 8)

select
F_ID = q.F_ID
from
(select
F_ID = IsNull(B.F_ID, D.F_ID),
D_How = IsNull(D.How, 0),
B_How = IsNull(B.How, 0)
from Boly B full join Doly D on B.F_ID = D.F_ID
) q
group by q.F_ID
having sum(q.B_How - q.D_How) > 0


 
Just_Dont_Know   (2002-10-28 17:07) [6]

Всем спасибо за предложения!



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.013 c
14-59424
lak
2002-10-31 15:26
2002.11.18
html - переадресация


6-59307
pkm
2002-07-20 16:04
2002.11.18
Сеть


3-59058
max2057
2002-10-30 13:53
2002.11.18
Репликация Oracle ов


3-59057
Telic
2002-10-30 12:38
2002.11.18
Виснет при удалении


6-59301
IGORka
2002-09-02 19:00
2002.11.18
Имя пользователя




   Наверх