Запрос в 1с 8.1 - как объединить таблицы
16.02.2011
10:24
#1
в тексте запроса получаю две таблицы с колонками:
Таблица №1 - Период,СуммаПроцентов
Таблица№2 - Период,ОсновнойДолг
Делаю ПолноеВнешнееСоединение по Периоду, и получается выходная таблица след. вида
Выходная таблица - Период1,Период2,СуммаПроцентов,ОсновнойДолг
Как сделать чтобы соединение происходило так
Период,СуммаПроцетов,ОсновнойДолг
Причем в колонку "период" попали данные из колонок "Период1","Период2", причем если даты совпадают, тогда выводить в одну строку?
Таблица №1 - Период,СуммаПроцентов
Таблица№2 - Период,ОсновнойДолг
Делаю ПолноеВнешнееСоединение по Периоду, и получается выходная таблица след. вида
Выходная таблица - Период1,Период2,СуммаПроцентов,ОсновнойДолг
Как сделать чтобы соединение происходило так
Период,СуммаПроцетов,ОсновнойДолг
Причем в колонку "период" попали данные из колонок "Период1","Период2", причем если даты совпадают, тогда выводить в одну строку?
16.02.2011
11:32
#3
ВЫБРАТЬ
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
ПРЕДСТАВЛЕНИЕ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента),
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период,
СУММА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток) КАК СуммаВзаиморасчетовНачальныйОстаток,
СУММА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток) КАК СуммаВзаиморасчетовКонечныйОстаток,
ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента1,
ПРЕДСТАВЛЕНИЕ(ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента) КАК ДоговорКонтрагентаПредставление1,
ЗаказыПокупателейОстаткиИОбороты.Период КАК Период1,
СУММА(ЗаказыПокупателейОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
СУММА(ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачДата, &КонДата, День, ДвиженияИГраницыПериода, ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(&НачДата, &КонДата, День, ДвиженияИГраницыПериода, ) КАК ЗаказыПокупателейОстаткиИОбороты
ПО ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента = ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента
И ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период = ЗаказыПокупателейОстаткиИОбороты.Период
ГДЕ
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента В(&ВыбДоговор)
И ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента В(&ВыбДоговор)
СГРУППИРОВАТЬ ПО
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период,
ЗаказыПокупателейОстаткиИОбороты.Период,
ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента
Это похожий,того варианта нет под рукой сейчас, но там одинаковая структура, и результат один и тот же. Т.е. смысл в одну колонку вывести периоды с разных ВТ
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
ПРЕДСТАВЛЕНИЕ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента),
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период,
СУММА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток) КАК СуммаВзаиморасчетовНачальныйОстаток,
СУММА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток) КАК СуммаВзаиморасчетовКонечныйОстаток,
ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента1,
ПРЕДСТАВЛЕНИЕ(ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента) КАК ДоговорКонтрагентаПредставление1,
ЗаказыПокупателейОстаткиИОбороты.Период КАК Период1,
СУММА(ЗаказыПокупателейОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
СУММА(ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачДата, &КонДата, День, ДвиженияИГраницыПериода, ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(&НачДата, &КонДата, День, ДвиженияИГраницыПериода, ) КАК ЗаказыПокупателейОстаткиИОбороты
ПО ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента = ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента
И ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период = ЗаказыПокупателейОстаткиИОбороты.Период
ГДЕ
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента В(&ВыбДоговор)
И ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента В(&ВыбДоговор)
СГРУППИРОВАТЬ ПО
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период,
ЗаказыПокупателейОстаткиИОбороты.Период,
ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента
Это похожий,того варианта нет под рукой сейчас, но там одинаковая структура, и результат один и тот же. Т.е. смысл в одну колонку вывести периоды с разных ВТ
16.02.2011
12:14
#4
ПОЛНОЕ СОЕДИНЕНИЕ подразумевает все записи слева и все записи справа, а если условие выполняется - совместить.
Попробуйте Внутреннее СОЕДИНЕНИЕ и без условия Где.
Попробуйте Внутреннее СОЕДИНЕНИЕ и без условия Где.
16.02.2011
14:48
#5
Если я правильно поняла то, что Вы желаете получить,на примере Вашего запросика, думаю, что где-то так:
"ВЫБРАТЬ
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент.Наименование КАК КонтрагентНаименование,
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период КАК Период,
0 КАК ЗаказаноНачальныйОстаток,
СУММА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток) КАК СуммаВзаиморасчетовНачальныйОстаток,
0 КАК ЗаказаноКонечныйОстаток,
СУММА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток) КАК СуммаВзаиморасчетовКонечныйОстаток
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачДата, &КонДата, День, ДвиженияИГраницыПериода, ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
СГРУППИРОВ АТЬ ПО
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период,
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент.Наименование
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя.Контрагент.Наименование,
ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента,
ЗаказыПокупателейОстаткиИОбороты.Период,
СУММА(ЗаказыПокупателейОстаткиИОбороты.КоличествоНачальныйОстаток),
0,
СУММА(ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток),
0
ИЗ
РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(&НачДата, &КонДата, День, ДвиженияИГраницыПериода, ) КАК ЗаказыПокупателейОстаткиИОбороты
СГРУППИРОВАТЬ ПО
ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента,
ЗаказыПокупателейОстаткиИОбороты.Период,
ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя.Контрагент.Наименование
ИТОГИ
СУММА(ЗаказаноНачальныйОстаток),
СУММА(ЗаказаноКонечныйОстаток),
СУММА(СуммаВзаиморасчетовНачальныйОстаток),
СУММА(СуммаВзаиморасчетовКонечныйОстаток)
ПО
ОБЩИЕ,
Период,
КонтрагентНаименование,
ДоговорКонтрагента"
"ВЫБРАТЬ
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент.Наименование КАК КонтрагентНаименование,
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период КАК Период,
0 КАК ЗаказаноНачальныйОстаток,
СУММА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток) КАК СуммаВзаиморасчетовНачальныйОстаток,
0 КАК ЗаказаноКонечныйОстаток,
СУММА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток) КАК СуммаВзаиморасчетовКонечныйОстаток
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачДата, &КонДата, День, ДвиженияИГраницыПериода, ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
СГРУППИРОВ
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период,
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент.Наименование
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя.Контрагент.Наименование,
ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента,
ЗаказыПокупателейОстаткиИОбороты.Период,
СУММА(ЗаказыПокупателейОстаткиИОбороты.КоличествоНачальныйОстаток),
0,
СУММА(ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток),
0
ИЗ
РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(&НачДата, &КонДата, День, ДвиженияИГраницыПериода, ) КАК ЗаказыПокупателейОстаткиИОбороты
СГРУППИРОВАТЬ ПО
ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента,
ЗаказыПокупателейОстаткиИОбороты.Период,
ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя.Контрагент.Наименование
ИТОГИ
СУММА(ЗаказаноНачальныйОстаток),
СУММА(ЗаказаноКонечныйОстаток),
СУММА(СуммаВзаиморасчетовНачальныйОстаток),
СУММА(СуммаВзаиморасчетовКонечныйОстаток)
ПО
ОБЩИЕ,
Период,
КонтрагентНаименование,
ДоговорКонтрагента"
ЗУП 2.5.31.4, Анализ начислений зароботной платыкак правильно произвести обмен данными Из конф Бух в УпрТорг
Читают тему
(гостей: 1)