![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сложная выборка [D7, FB2.0]
belmol © (2008-11-28 07:56:00)Доброго времени суток,
ситуация следующая: есть 2 таблицы 1- список договоров, 2 список счетов по данным договорам
1: id| name_org|date_in| 2: id|cash1 |cash2|vector
одной записи таблицы 1 соответствует несколько записей 2-й таблице, в гриде мне надо получить:
id|name_org|date_in|(сумма (cash1)где vector=0)-(сумма (cash1)где vector=1)|(сумма (cash2)где vector=0)-(сумма (cash2)где vector=1)
ну е выходит запрос. всю голову сломал(( видимо не хватает чего то в голове.
belmol (2008-11-28 12:21:00) [1]СПАСИБО)
Виталий Панасенко (2008-11-28 11:17:00) [2]
> stas © (28.11.08 11:12) [6]
да
stas (2008-11-28 11:12:00) [3]Не пойму в чем сложность?
Я напишу в синтаксисе MSSQL т.к. незнаю FB.
на FB наверное также решается.
Select table1.id, name_org,date_in,
sum (case when vector=0 then cash1 end)-sum(case when vector=1 then cash1 end) as summa1,
sum (case when vector=0 then cash2 end)-sum(case when vector=1 then cash2 end) as summa2
From tbal1 inner join table2 on table1.id=table2.id
group by table1.id, name_org,date_in
Виталий Панасенко (2008-11-28 11:02:00) [4]предложите другой.. я не думаю, что связанных по ID данных - миллионы.. если так, то тогда переписать в EXECUTE BLOCK.. хотя.. все равно ведь суммы как-то считать нужно
Кщд (2008-11-28 09:46:00) [5]>Виталий Панасенко (28.11.08 09:39) [3]
>stas © (28.11.08 09:05) [1]
разумное решение
в Вашем варианте: на каждую запись таблицы 1 - четыре скана таблицы 2(и хорошо ещё, если по индексу) - это правильно?
Виталий Панасенко (2008-11-28 09:39:00) [6]Используй подзапросы
Select id,name_org,...,(select sum(cash1) from tab t1 where vector=0 and t1.id=t.id)-(select sum(cash1) from tab t1 where vector=1 and t1.id=t.id) и т.д.
from tab t
Сергей М. (2008-11-28 09:27:00) [7]Какое поле 2-й таблицы является втор.ключем ?
stas (2008-11-28 09:05:00) [8]Используй
CASE (в mssql в fb наверное тоже), SUM, GROUP BY