Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > SQL-запрос (объединение двух запросов)


Автор: chip_and_dayl 15.5.2009, 16:17
Помогите мне добрые люди полезным советом.

Есть у меня две таблицы, созданы в СУБД Access 2002:

user posted image

Результатом должна быть разница между таб.1 и таб. 2, то есть Приход.Количество-Расход.Количество=Результат.Количество.

user posted image

Я почти сделал это с помощью объединения двух запросов: 1-запрос: отбирает кода товаров с таб. 1, которые входят в диапазон дата_Начальная и дата_конечная, после чего группируются данные; 2-запрос: тоже самое, только проделано со второй таблицей, плюс поле Количество умножено на -1.
Вид запроса на языке SQL:

Код

ServerData2.ADOQuery2.SQL.Text:=
   'Select Приход.Код, Приход.Название, Sum(Приход.Количество) from Приход
     where  Приход.Дата>=#'+ FormatDateTime('mm-dd-yyyy', DateTimePicker1.Date) + '# and Приход.Дата<=#'+ FormatDateTime('mm-dd-yyyy', DateTimePicker2.Date) + '# group By Приход.Код,Приход.Название  
                 union all ' +
    'Select Расход.Код, Расход.НАзвание, Sum(Расход.Количество)*(-1) from РАсход 
      where  Расход.Дата>=#'+ FormatDateTime('mm-dd-yyyy', DateTimePicker1.Date) +
        '# and Расход.Дата<=#'+ FormatDateTime('mm-dd-yyyy', DateTimePicker2.Date) + '# group By Расход.КОд, Расход.Название order by 1';


В итоге я получил 

user posted image

Вопрос. Можно как-то еще раз сгруппировать результат двух объдененных запросов, чтобы получить результат как в Таб. 3?
или может вы знаете другой вариант получения желаемого результата?smile

Автор: Kbl4AH 19.5.2009, 11:48
не думая можно так:
Код

select код, название, sum(количество) from
(select код, название, sum(количество) as количество from приход group by код, название
union all
select код, название, (-1) * sum(количество) from расход group by код, название)
group by код, название


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)