Данные из двух запросов в один GroupHeader
Вопрос следующий:
Есть два SQL запроса которые дёргают одни и те же данные из таблиц, но из разных периодов дат, всё это передаётся в два разных frxDBDataSet из которых отчёт получает данные. Нужна группировка (GroupHeader) по типу ГСМ, но не из выбранного frxDBDataSet, а из двух сразу. Т. е.
frxDBDataSet frxDBDataSet1
Вид ГСМ Орг-я Реализация Выручка Реализация Выручка % соотн.
данныеи из frxDBDataSet данныеи из frxDBDataSet1
Как вот енто всё реализовать ?
Во замутил.
Есть два SQL запроса которые дёргают одни и те же данные из таблиц, но из разных периодов дат, всё это передаётся в два разных frxDBDataSet из которых отчёт получает данные. Нужна группировка (GroupHeader) по типу ГСМ, но не из выбранного frxDBDataSet, а из двух сразу. Т. е.
frxDBDataSet frxDBDataSet1
Вид ГСМ Орг-я Реализация Выручка Реализация Выручка % соотн.
данныеи из frxDBDataSet данныеи из frxDBDataSet1
Как вот енто всё реализовать ?
Во замутил.
Комментарии
select Fuel.Marka, Osnovan.Name, SUM(TotOsnov.Lit) Litr,
SUM(TotOsnov.Cur) Summa,
((SUM(TotOsnov.Lit)*Fuel.Price)-SUM(TotOsnov.Cur)) Delta
from Fuel, TotOsnov, Osnovan
where
TotOsnov.ShiftTo>=:QDBeg and TotOsnov.ShiftTo<=:QDEnd
and
TotOsnov.Product=Fuel.Num
and
TotOsnov.Osnovanye=Osnovan.Num
group by Marka, Name
having SUM(TotOsnov.Cur)<>0
union
select Fuel.Marka, Osnovan.Name, SUM(TotOsnov.Lit) Litr,
SUM(TotOsnov.Cur) Summa,
((SUM(TotOsnov.Lit)*0)-SUM(TotOsnov.Cur)) Delta
from Fuel, TotOsnov, Osnovan
where
TotOsnov.ShiftTo>=:QDBeg and TotOsnov.ShiftTo<=:QDEnd
and
TotOsnov.Product=Fuel.Num
and
TotOsnov.Osnovanye=Osnovan.Num
group by Marka, Name
having SUM(TotOsnov.Cur)=0
и на сколько я понимаю имена полей можно задавать только агрегатным полям, хотяможет и ошибаюсь.
И точно такой же запрос за другой период, но надо объединить их в отчёте в один. Т. е. мне надо получить % разницу за сравниваемые периоды.
select field1 f1, field2 f2, 0 f3, 0 f4
from table
union all
select 0 f1, 0 f2, field1 f3, field2 f4
from table
а результат можно вывести в DBCrossView
В обработчике можно написать движение и подсчет по второму датасету.
Элементарный пример: При этом выводите в полях мастердвты нужные поля нужных датасетов.
Если же запросы возвращают датасеты разной длины, то придется писать обработчик посложнее.
Но, в принципе, возможно и не очень сложно.