Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
1-67771
bestix
2003-07-07 15:31
2003.07.21
Изменить порядок Align


1-67891
dm37
2003-07-07 12:31
2003.07.21
Hint


6-67943
LOX
2003-05-15 20:14
2003.07.21
Как сделать кнопки назад и вперёд


3-67729
Sliften
2003-06-28 17:52
2003.07.21
Текст SQL зарание Не известен


3-67717
Alexey
2003-06-27 13:44
2003.07.21
Закрашивание DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский