Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема как сравнить два запроса (число прочтений - 1428 )
g00d
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 68
Зарегистрирован: 13. Ноября 2006
как сравнить два запроса
16. Августа 2008 :: 23:27
Печать  
а точнее получить их разницу

sql 2000+ v77027+ 1cpp2.0.3.3+ winxp sp3
есть 2 запроса средствами AccountsRecordSet в бух.итоги двух планов счетов

Код
Выбрать все
		SQL.УстановитьТекстовыйПараметр("ВыбДата",ДатаДок);
		SQL.УстановитьТекстовыйПараметр("Подразделение",Подразделение);
		ТекстЗапроса = "
		|SET NOCOUNT ON
		|SELECT
		|     ОсновнойОстатки.Счет [Счет $Счет.Основной]
		|   , БюджетныйОстатки.Счет [Счет $Счет.Бюджетный]
		|	, ОсновнойОстатки.Субконто1
		|	, ОсновнойОстатки.Субконто2
		|	, ОсновнойОстатки.Субконто3
		|	, ОсновнойОстатки.СуммаОстатокДт
		|	, ОсновнойОстатки.СуммаОстатокКт
		|	, ОсновнойОстатки.КоличествоОстатокДт
		|	, ОсновнойОстатки.КоличествоОстатокКт
		//|	, БюджетныйОстатки.Субконто1
		//|	, БюджетныйОстатки.Субконто2
		//|	, БюджетныйОстатки.Субконто3
		|	, БюджетныйОстатки.СуммаОстатокДт
		|	, БюджетныйОстатки.СуммаОстатокКт
		|	, БюджетныйОстатки.КоличествоОстатокДт
		|	, БюджетныйОстатки.КоличествоОстатокКт
		|FROM $БИОстатки.Основной(:ВыбДата,,,,
		|		(РазделительУчета = :Подразделение)) AS ОсновнойОстатки
		|inner join $БИОстатки.Бюджетный(:ВыбДата,,,,
		|		(РазделительУчета = :Подразделение)) AS БюджетныйОстатки
		| on   БюджетныйОстатки.Счет=ОсновнойОстатки.Счет
		| and   БюджетныйОстатки.Субконто1=ОсновнойОстатки.Субконто1
		| and   БюджетныйОстатки.Субконто2=ОсновнойОстатки.Субконто2
		| and   БюджетныйОстатки.Субконто3=ОсновнойОстатки.Субконто3
		|";
		тз=SQL.ВыполнитьИнструкцию(ТекстЗапроса);
 



в общем мне нужно получить разницу результатов двух запросов в разрезе счетов, и всех субконто



  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: как сравнить два запроса
Ответ #1 - 17. Августа 2008 :: 09:50
Печать  
Как-то так:
Код
Выбрать все
select sum(Сумма) Разница
from (
	select Сумма
	from Таблица1
	union all
	select -Сумма
	from Таблица2
) 


или так:
Код
Выбрать все
select Таблица1.Сумма Сумма1, Таблица2.Сумма Сумма2
	, isnull(Таблица1.Сумма, 0) - isnull(Таблица2.Сумма, 0) Разница
from Таблица1
	full outer join Таблица2 on ... 

  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
g00d
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 68
Зарегистрирован: 13. Ноября 2006
Re: как сравнить два запроса
Ответ #2 - 17. Августа 2008 :: 20:47
Печать  
berezdetsky писал(а) 17. Августа 2008 :: 09:50:
Как-то так:
Код
Выбрать все
select sum(Сумма) Разница
from (
	select Сумма
	from Таблица1
	union all
	select -Сумма
	from Таблица2
) 



спасибо \это то что нужно
самое любопытное что я такое делал просто не докумался использовать знак минус Подмигивание
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать