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

Вниз

IB/FB - Запрос по подзапросу с группировкой   Найти похожие ветки 

 
seregin   (2003-06-26 14:34) [0]

Привет, Мастера!!!
Есть таблица: Дебет, Кредит, Сумма (комбинации повторяются). Нужно сделать группировку Счет, Оборот_По_Дебету, Оборот_По_Кредиту (т.е. уникальность по Счету). Как сделать это одним запросом?
Пацаны-ораклисты посоветовали так:
select Счет, sum(Дебет_Сумма), sum(Кредит_Сумма) from
(select Дебет as Счет, sum(Сумма) as Дебет_Сумма, 0 as Кредит_Сумма
from Проводки group by Дебет
union
select Кредит as Счет, sum(Сумма) as 0 as Дебет_Счет, sum(Сумма) as Кредит_Сумма
from Проводки group by Кредит)
group by Счет


Firebird на такую конструкцию ругается сразу после первого from...

может можно по-другому? на клиенте из двух запросов я могу и сам...


 
Соловьев ©   (2003-06-26 14:37) [1]

русские поля?


 
seregin   (2003-06-26 14:38) [2]

> Соловьев
нет, я просто так написал...


 
Соловьев ©   (2003-06-26 14:39) [3]


> (select Дебет as Счет, sum(Сумма) as Дебет_Сумма, 0 as Кредит_Сумма
>

а где этот select заканчивается?


 
seregin   (2003-06-26 14:40) [4]

> Соловьев
перед union


 
Zacho ©   (2003-06-26 14:41) [5]


> seregin (26.06.03 14:34)

Структуру таблицы более подробно опиши, а то из этого дикого запроса ничего не понятно.


 
Соловьев ©   (2003-06-26 14:41) [6]

скобка где?
select fom select не канает...


 
seregin   (2003-06-26 14:44) [7]

> Соловьев

select Счет, sum(Дебет_Сумма), sum(Кредит_Сумма) from
((select Дебет as Счет, sum(Сумма) as Дебет_Сумма, 0 as Кредит_Сумма
from Проводки group by Дебет)
union
(select Кредит as Счет, sum(Сумма) as 0 as Дебет_Счет, sum(Сумма) as Кредит_Сумма
from Проводки group by Кредит))
group by Счет


я в документации не нашел "select from select"...
по-другому нельзя?


 
Johnmen ©   (2003-06-26 14:45) [8]

Запрос из запроса, естественно, не пойдет.
Стандартное несложное решение - хранимая процедура.


 
seregin   (2003-06-26 14:47) [9]

>Zacho

Дебет - счет-дебет
Кредит - счет-кредит
Сумма - числовое поле, хранящее сумму проводки

20/01 |60/01 | 165.00
20/01 |08/03 | 1655.50
и т.д.
пойдет?


 
seregin   (2003-06-26 14:48) [10]

> Johnmen
хранимую процедуру нельзя - разработчик поимеет :(


 
Соловьев ©   (2003-06-26 14:50) [11]


> хранимую процедуру нельзя - разработчик поимеет :(

почему примеет? ХП ничего плохого с БД не сделает....(если все правильно :)


 
seregin   (2003-06-26 14:53) [12]

> Соловьев
нельзя!!!
уже получал...


 
Sandman25 ©   (2003-06-26 15:21) [13]

select счет,
(select sum(сумма)
from проводки
where дебет = t.счет
),
(select sum(сумма)
from проводки
where кредит = t.счет
)
from счета t

Но работать будет очень медленно.
Лучше сделать 2 запроса с Group By и Union.


 
seregin   (2003-06-26 15:54) [14]

> Sandman25
да, замечательно...
но ОЧЕНЬ медленно!!!!!
а если учесть, что полей гораздо больше (аналитика), то вообще нереально...
на клиенте быстрее....

ладно, всем спасибо...


 
Sandman25 ©   (2003-06-26 16:12) [15]

Можно еще сделать вот так.
select счет, sum(сумма), 0
from проводки
where дебет = счет
group by 1,3
union all
select счет, 0, sum(сумма)
from проводки
where кредит = счет
group by 1,3

Не совсем то, что нужно, но если дописать "order by счет", то на клиенте можно будет слить суммы в одну строку.



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

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

Наверх




Память: 0.5 MB
Время: 0.017 c
3-67694
SiDrugs
2003-06-26 20:08
2003.07.21
Правильно спроектировать и реализовать БД


14-67962
zolotov
2003-07-01 19:00
2003.07.21
Где можно достать ToolBar c окном настройки кнопок?


14-68058
Карелин Артем
2003-07-04 17:40
2003.07.21
Мой ответ SOFT.


3-67737
Deedlit
2003-06-29 11:29
2003.07.21
Несоответствие типов данных в выражении условия отбора


11-67742
Ал
2002-11-16 23:25
2003.07.21
Pbitmap.ScanLine не работает!