Запрос с использованием оператора выбора не объединяет в одну строку

1. user1816391 14.03.23 09:31 Сейчас в теме
Запрос с использованием оператора выбора не объединяет в одну строку, вот весь запрос:

ВЫБРАТЬ
	ИсторияНачисленийПоШтатномуРасписанию.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
	ИсторияНачисленийПоШтатномуРасписанию.Дата КАК Дата,
	ИсторияПоказателейПоШтатномуРасписанию.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания1,
	ИсторияПоказателейПоШтатномуРасписанию.Дата КАК Дата1,
	ИсторияНачисленийПоШтатномуРасписанию.Начисление КАК Начисление,
	ИсторияПоказателейПоШтатномуРасписанию.Показатель КАК Показатель,
	ИсторияНачисленийПоШтатномуРасписанию.Размер КАК Размер,
	ИсторияПоказателейПоШтатномуРасписанию.Значение КАК Значение,
	ИсторияПоказателейПоШтатномуРасписанию.ПозицияШтатногоРасписания.Подразделение КАК ПозицияШтатногоРасписанияПодразделение,
	ИсторияНачисленийПоШтатномуРасписанию.ПозицияШтатногоРасписания.Должность КАК ПозицияШтатногоРасписанияДолжность,
	ИсторияНачисленийПоШтатномуРасписанию.ПозицияШтатногоРасписания.КоличествоСтавок КАК ПозицияШтатногоРасписанияКоличествоСтавок,
	ИсторияНачисленийПоШтатномуРасписанию.ПозицияШтатногоРасписания.РазрядКатегория КАК ПозицияШтатногоРасписанияРазрядКатегория,
	ИсторияПоказателейПоШтатномуРасписанию.ПозицияШтатногоРасписания.РазрядКатегория КАК ПозицияШтатногоРасписанияРазрядКатегория1,
	ИсторияНачисленийПоШтатномуРасписанию.ПозицияШтатногоРасписания.РазрядКатегория.Коэффициент КАК ПозицияШтатногоРасписанияРазрядКатегорияКоэффициент,
	ИсторияНачисленийПоШтатномуРасписанию.ПозицияШтатногоРасписания.ФОТ КАК ПозицияШтатногоРасписанияФОТ,
	ИсторияПоказателейПоШтатномуРасписанию.ПозицияШтатногоРасписания.ФОТУправленческий КАК ПозицияШтатногоРасписанияФОТУправленческий,
	ИсторияНачисленийПоШтатномуРасписанию.Размер КАК Размер1,
	ИсторияПоказателейПоШтатномуРасписанию.Значение КАК Значение1,
	ИсторияПоказателейПоШтатномуРасписанию.НомерСтроки КАК НомерСтроки,
	ИсторияНачисленийПоШтатномуРасписанию.НомерСтроки КАК НомерСтроки1
ПОМЕСТИТЬ ДанныеРС
ИЗ
	РегистрСведений.ИсторияНачисленийПоШтатномуРасписанию КАК ИсторияНачисленийПоШтатномуРасписанию
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияПоказателейПоШтатномуРасписанию КАК ИсторияПоказателейПоШтатномуРасписанию
		ПО ИсторияНачисленийПоШтатномуРасписанию.Дата = ИсторияПоказателейПоШтатномуРасписанию.Дата
			И ИсторияНачисленийПоШтатномуРасписанию.Регистратор = ИсторияПоказателейПоШтатномуРасписанию.Регистратор
			И ИсторияНачисленийПоШтатномуРасписанию.ИдентификаторСтрокиВидаРасчета = ИсторияПоказателейПоШтатномуРасписанию.ИдентификаторСтрокиВидаРасчета
ГДЕ
	ИсторияПоказателейПоШтатномуРасписанию.Дата <= &ДатаКонец
	И ИсторияПоказателейПоШтатномуРасписанию.Активность = ИСТИНА
	И ИсторияНачисленийПоШтатномуРасписанию.Дата <= &ДатаКонец
	И ИсторияНачисленийПоШтатномуРасписанию.Активность = ИСТИНА
	И ИсторияПоказателейПоШтатномуРасписанию.ПозицияШтатногоРасписания.Подразделение.Наименование = "Столовая"
	И ИсторияНачисленийПоШтатномуРасписанию.ПозицияШтатногоРасписания.РазрядКатегория.Наименование <> ""
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ДанныеРС.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
	МАКСИМУМ(ДанныеРС.Дата) КАК Дата
ПОМЕСТИТЬ ДанныеГруппировки
ИЗ
	ДанныеРС КАК ДанныеРС

СГРУППИРОВАТЬ ПО
	ДанныеРС.ПозицияШтатногоРасписания
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ДанныеРС.ПозицияШтатногоРасписанияДолжность КАК Должность,
	ДанныеРС.ПозицияШтатногоРасписанияКоличествоСтавок КАК КоличествоСтавок,
	ВЫБОР
		КОГДА ДанныеРС.Начисление.Наименование = "Сдельный заработок (для работающих по окладу)"
				ИЛИ ДанныеРС.Начисление.Наименование = "Сдельный заработок (для работающих по часовому тарифу)"
			ТОГДА "СД"
		КОГДА ДанныеРС.Показатель.Наименование ПОДОБНО "%Процент%"
			ТОГДА ""
		ИНАЧЕ "П"
	КОНЕЦ КАК ФОТ,
	ДанныеРС.ПозицияШтатногоРасписанияРазрядКатегория КАК Тариф,
	ВЫБОР
		КОГДА ДанныеРС.Начисление.Наименование = "Сдельный заработок (для работающих по окладу)"
			ТОГДА ДанныеРС.ПозицияШтатногоРасписанияРазрядКатегорияКоэффициент
	КОНЕЦ КАК Коэффициент,
	ВЫБОР
		КОГДА НЕ ДанныеРС.Показатель.Наименование ПОДОБНО "%Процент%"
				И НЕ ДанныеРС.Начисление.Наименование = "Сдельный заработок (для работающих по окладу)"
			ТОГДА ДанныеРС.Значение
	КОНЕЦ КАК Значение,
	ВЫБОР
		КОГДА НЕ ДанныеРС.Показатель.Наименование ПОДОБНО "%Процент%"
				И ДанныеРС.Начисление.Наименование = "Сдельный заработок (для работающих по окладу)"
			ТОГДА ДанныеРС.Размер
	КОНЕЦ КАК Размер,
	ВЫБОР
		КОГДА ДанныеРС.Показатель.Наименование ПОДОБНО "%Процент%"
				И ДанныеРС.Начисление.Наименование = "за работу по контрактной форме найма"
			ТОГДА ДанныеРС.Значение
	КОНЕЦ КАК ЗначениеПроцентКонтракт,
	ВЫБОР
		КОГДА ДанныеРС.Показатель.Наименование ПОДОБНО "%Процент%"
				И НЕ ДанныеРС.Начисление.Наименование = "за работу по контрактной форме найма"
			ТОГДА ДанныеРС.Значение
	КОНЕЦ КАК ЗначениеПроцент,
	ДанныеРС.Начисление.Наименование КАК ФОТ1,
	ВЫБОР
		КОГДА ДанныеРС.Начисление.Наименование ПОДОБНО "%за работу по контрактной форме найма%"
			ТОГДА ДанныеРС.Начисление.Наименование
	КОНЕЦ КАК ФОТ1Контракт,
	ВЫБОР
		КОГДА ДанныеРС.Начисление.Наименование ПОДОБНО "%за характер и специфику выполняемой работы%"
			ТОГДА ДанныеРС.Начисление.Наименование
	КОНЕЦ КАК ФОТ1Характер,
	ВЫБОР
		КОГДА ДанныеРС.Начисление.Наименование ПОДОБНО "%за характер и специфику выполняемой работы%"
			ТОГДА ДанныеРС.Значение
	КОНЕЦ КАК ЗначениеХарактерт,
	ВЫБОР
		КОГДА ДанныеРС.Начисление.Наименование ПОДОБНО "%за работу на открытом воздухе%"
			ТОГДА ДанныеРС.Начисление.Наименование
	КОНЕЦ КАК ФОТ1ОткрытыйВоздух,
	ВЫБОР
		КОГДА ДанныеРС.Начисление.Наименование ПОДОБНО "%за работу на открытом воздухе%"
			ТОГДА ДанныеРС.Значение
	КОНЕЦ КАК ЗначениеОткрытыйВоздух,
	ВЫБОР
		КОГДА ДанныеРС.Начисление.Наименование ПОДОБНО "%за квалификационную категорию%"
			ТОГДА ДанныеРС.Начисление.Наименование
	КОНЕЦ КАК ФОТ1Категорию,
	ВЫБОР
		КОГДА ДанныеРС.Начисление.Наименование ПОДОБНО "%за квалификационную категорию%"
			ТОГДА ДанныеРС.Значение
	КОНЕЦ КАК ЗначениеКатегория,
	ДанныеГруппировки.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
	ДанныеГруппировки.Дата КАК Дата,
	ДанныеРС.Показатель.Наименование КАК ПоказательНаименование,
	ДанныеРС.ПозицияШтатногоРасписанияПодразделение КАК ПозицияШтатногоРасписанияПодразделение,
	ДанныеРС.ПозицияШтатногоРасписанияФОТ КАК ПозицияШтатногоРасписанияФОТ,
	ДанныеРС.ПозицияШтатногоРасписанияФОТУправленческий КАК ПозицияШтатногоРасписанияФОТУправленческий,
	ДанныеРС.Размер1 КАК Размер1,
	ДанныеРС.Значение1 КАК Значение1,
	ДанныеРС.НомерСтроки КАК НомерСтроки,
	ДанныеРС.НомерСтроки1 КАК НомерСтроки1
ПОМЕСТИТЬ ВТ_ФОТ
ИЗ
	ДанныеГруппировки КАК ДанныеГруппировки
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеРС КАК ДанныеРС
		ПО ДанныеГруппировки.ПозицияШтатногоРасписания = ДанныеРС.ПозицияШтатногоРасписания
			И ДанныеГруппировки.Дата = ДанныеРС.Дата
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_ФОТ.Должность КАК Должность,
	ВТ_ФОТ.КоличествоСтавок КАК КоличествоСтавок,
	ВТ_ФОТ.Тариф КАК Тариф,
	МАКСИМУМ(ВТ_ФОТ.ФОТ) КАК ФОТ,
	МАКСИМУМ(ВТ_ФОТ.ФОТ1Категорию) КАК ФОТ1Категорию,
	МАКСИМУМ(ВТ_ФОТ.ФОТ1ОткрытыйВоздух) КАК ФОТ1ОткрытыйВоздух,
	МАКСИМУМ(ВТ_ФОТ.ФОТ1Характер) КАК ФОТ1Характер,
	МАКСИМУМ(ВТ_ФОТ.ФОТ1Контракт) КАК ФОТ1Контракт,
	СУММА(ЕСТЬNULL(ВТ_ФОТ.Коэффициент, 0)) КАК Коэффициент,
	СУММА(ЕСТЬNULL(ВТ_ФОТ.Значение, 0)) КАК Значение,
	СУММА(ЕСТЬNULL(ВТ_ФОТ.Размер, 0)) КАК Размер,
	СУММА(ЕСТЬNULL(ВТ_ФОТ.ЗначениеПроцентКонтракт, 0)) КАК ЗначениеПроцентКонтракт,
	СУММА(ЕСТЬNULL(ВТ_ФОТ.ЗначениеПроцент, 0)) КАК ЗначениеПроцент,
	МАКСИМУМ(ВТ_ФОТ.ЗначениеХарактерт) КАК ЗначениеХарактерт,
	МАКСИМУМ(ВТ_ФОТ.ЗначениеОткрытыйВоздух) КАК ЗначениеОткрытыйВоздух,
	МАКСИМУМ(ВТ_ФОТ.ЗначениеКатегория) КАК ЗначениеКатегория,
	ВТ_ФОТ.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
	ВТ_ФОТ.Дата КАК Дата
ПОМЕСТИТЬ ВТ_Рас
ИЗ
	ВТ_ФОТ КАК ВТ_ФОТ

СГРУППИРОВАТЬ ПО
	ВТ_ФОТ.Должность,
	ВТ_ФОТ.КоличествоСтавок,
	ВТ_ФОТ.Тариф,
	ВТ_ФОТ.ПозицияШтатногоРасписания,
	ВТ_ФОТ.Дата
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Рас.Должность КАК Должность,
	ВТ_Рас.КоличествоСтавок КАК КоличествоСтавок,
	ВТ_Рас.Тариф КАК Тариф,
	ВТ_Рас.Коэффициент КАК Коэффициент,
	ВТ_Рас.Значение КАК Значение,
	ВТ_Рас.Размер КАК Размер,
	ВТ_Рас.ЗначениеПроцентКонтракт КАК ЗначениеПроцентКонтракт,
	ВТ_Рас.ЗначениеПроцент КАК ЗначениеПроцент,
	ВЫРАЗИТЬ(ВТ_Рас.Размер * (1 + ВТ_Рас.ЗначениеПроцентКонтракт / 100 + ВТ_Рас.ЗначениеПроцент / 100) КАК ЧИСЛО(15, 2)) КАК Ставка,
	ВЫРАЗИТЬ(ВТ_Рас.Значение * (1 + ВТ_Рас.ЗначениеПроцентКонтракт / 100 + ВТ_Рас.ЗначениеПроцент / 100) КАК ЧИСЛО(15, 2)) КАК СтавкаЧас,
	ВЫБОР
		КОГДА ВТ_Рас.Размер * (1 + ВТ_Рас.ЗначениеПроцентКонтракт / 100 + ВТ_Рас.ЗначениеПроцент / 100) = 0
			ТОГДА ВТ_Рас.Значение * (1 + ВТ_Рас.ЗначениеПроцентКонтракт / 100 + ВТ_Рас.ЗначениеПроцент / 100) * 167.83
		ИНАЧЕ ВТ_Рас.Размер * (1 + ВТ_Рас.ЗначениеПроцентКонтракт / 100 + ВТ_Рас.ЗначениеПроцент / 100)
	КОНЕЦ КАК Сумма,
	ВТ_Рас.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
	ВТ_Рас.ФОТ КАК ФОТ,
	ВТ_Рас.ЗначениеХарактерт КАК ЗначениеХарактерт,
	ВТ_Рас.ЗначениеОткрытыйВоздух КАК ЗначениеОткрытыйВоздух,
	ВТ_Рас.ЗначениеКатегория КАК ЗначениеКатегория,
	ВТ_Рас.ФОТ1Категорию КАК ФОТ1Категорию,
	ВТ_Рас.ФОТ1ОткрытыйВоздух КАК ФОТ1ОткрытыйВоздух,
	ВТ_Рас.ФОТ1Характер КАК ФОТ1Характер,
	ВТ_Рас.ФОТ1Контракт КАК ФОТ1Контракт
ПОМЕСТИТЬ ВТ_Итоги
ИЗ
	ВТ_Рас КАК ВТ_Рас
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Итоги.Должность КАК Должность,
	ВТ_Итоги.КоличествоСтавок КАК КоличествоСтавок,
	ВТ_Итоги.ФОТ КАК ФОТ,
	ВТ_Итоги.Тариф КАК Тариф,
	ВТ_Итоги.Коэффициент КАК Коэффициент,
	ВТ_Итоги.Значение КАК Значение,
	ВТ_Итоги.Размер КАК Размер,
	ВТ_Итоги.ЗначениеПроцентКонтракт КАК ЗначениеПроцентКонтракт,
	ВТ_Итоги.ЗначениеПроцент КАК ЗначениеПроцент,
	ВТ_Итоги.Ставка КАК Ставка,
	ВТ_Итоги.СтавкаЧас КАК СтавкаЧас,
	ВЫРАЗИТЬ(ВТ_Итоги.Сумма КАК ЧИСЛО(15, 2)) КАК Сумма,
	ВТ_Итоги.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
	ВЫБОР
		КОГДА ВТ_Итоги.ФОТ = "П"
			ТОГДА ВТ_Итоги.КоличествоСтавок
	КОНЕЦ КАК ФОТ_П,
	ВЫБОР
		КОГДА ВТ_Итоги.ФОТ = "СД"
			ТОГДА ВТ_Итоги.КоличествоСтавок
	КОНЕЦ КАК ФОТ_СД,
	ВЫБОР
		КОГДА ВТ_Итоги.ФОТ = "П"
			ТОГДА ВТ_Итоги.Сумма
	КОНЕЦ КАК Сумма_П,
	ВЫБОР
		КОГДА ВТ_Итоги.ФОТ = "СД"
			ТОГДА ВТ_Итоги.Сумма
	КОНЕЦ КАК Сумма_СД,
	ВТ_Итоги.КоличествоСтавок КАК КоличествоСтавокСумма,
	ВТ_Итоги.Сумма КАК СуммаСумма,
	ВТ_Итоги.Ставка КАК СтавкаСумма,
	ВТ_Итоги.СтавкаЧас КАК СтавкаЧасСумма,
	ВТ_Итоги.ЗначениеХарактерт КАК ЗначениеХарактерт,
	ВТ_Итоги.ЗначениеОткрытыйВоздух КАК ЗначениеОткрытыйВоздух,
	ВТ_Итоги.ЗначениеКатегория КАК ЗначениеКатегория,
	ВТ_Итоги.ФОТ1Категорию КАК ФОТ1Категорию,
	ВТ_Итоги.ФОТ1ОткрытыйВоздух КАК ФОТ1ОткрытыйВоздух,
	ВТ_Итоги.ФОТ1Характер КАК ФОТ1Характер,
	ВТ_Итоги.ФОТ1Контракт КАК ФОТ1Контракт
ПОМЕСТИТЬ ФТ_Финал
ИЗ
	ВТ_Итоги КАК ВТ_Итоги
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ФТ_Финал.Должность КАК Должность,
	ФТ_Финал.КоличествоСтавок КАК КоличествоСтавок,
	ФТ_Финал.ФОТ КАК ФОТ,
	ФТ_Финал.Тариф КАК Тариф,
	ФТ_Финал.Коэффициент КАК Коэффициент,
	ФТ_Финал.Значение КАК Значение,
	ФТ_Финал.Размер КАК Размер,
	ФТ_Финал.ЗначениеПроцентКонтракт КАК ЗначениеПроцентКонтракт,
	ФТ_Финал.ЗначениеПроцент КАК ЗначениеПроцент,
	ФТ_Финал.Ставка КАК Ставка,
	ФТ_Финал.СтавкаЧас КАК СтавкаЧас,
	ФТ_Финал.Сумма КАК Сумма,
	ФТ_Финал.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
	ФТ_Финал.ФОТ_П КАК ФОТ_П,
	ФТ_Финал.ФОТ_СД КАК ФОТ_СД,
	ВЫРАЗИТЬ(ФТ_Финал.Сумма_П КАК ЧИСЛО(15, 2)) КАК Сумма_П,
	ВЫРАЗИТЬ(ФТ_Финал.Сумма_СД КАК ЧИСЛО(15, 2)) КАК Сумма_СД,
	ФТ_Финал.КоличествоСтавокСумма КАК КоличествоСтавокСумма,
	ВЫРАЗИТЬ(ФТ_Финал.СуммаСумма КАК ЧИСЛО(15, 2)) КАК СуммаСумма,
	ФТ_Финал.СтавкаСумма КАК СтавкаСумма,
	ФТ_Финал.СтавкаЧасСумма КАК СтавкаЧасСумма,
	ФТ_Финал.ЗначениеХарактерт КАК ЗначениеХарактер,
	ФТ_Финал.ЗначениеОткрытыйВоздух КАК ЗначениеОткрытыйВоздух,
	ФТ_Финал.ЗначениеКатегория КАК ЗначениеКатегория,
	ФТ_Финал.ФОТ1Категорию КАК ФОТ1Категорию,
	ФТ_Финал.ФОТ1ОткрытыйВоздух КАК ФОТ1ОткрытыйВоздух,
	ФТ_Финал.ФОТ1Характер КАК ФОТ1Характер,
	ФТ_Финал.ФОТ1Контракт КАК ФОТ1Контракт,
	ВЫБОР
		КОГДА ФТ_Финал.ЗначениеХарактерт <> 0
				ИЛИ ФТ_Финал.ЗначениеОткрытыйВоздух <> 0
				ИЛИ ФТ_Финал.ЗначениеКатегория <> 0
			ТОГДА ФТ_Финал.ФОТ1Категорию + ФТ_Финал.ФОТ1ОткрытыйВоздух + ФТ_Финал.ФОТ1Характер
	КОНЕЦ КАК Свойства
ИЗ
	ФТ_Финал КАК ФТ_Финал
Показать


Вот эта часть не хочет работать:
ВЫБОР
		КОГДА ФТ_Финал.ЗначениеХарактерт <> 0
				ИЛИ ФТ_Финал.ЗначениеОткрытыйВоздух <> 0
				ИЛИ ФТ_Финал.ЗначениеКатегория <> 0
			ТОГДА ФТ_Финал.ФОТ1Категорию + ФТ_Финал.ФОТ1ОткрытыйВоздух + ФТ_Финал.ФОТ1Характер
	КОНЕЦ КАК Свойства


Этот запрос использует оператор выбора, чтобы проверить значения трех полей (ЗначениеХарактерт, ЗначениеОткрытыйВоздух и ЗначениеКатегория) и, если хотя бы одно из них не равно 0, то объединить значения других трех полей (ФОТ1Категорию, ФОТ1ОткрытыйВоздух и ФОТ1Характер) в одну строку и вернуть ее в столбце с псевдонимом "Свойства".

В чем может быть ошибка?
По теме из базы знаний
Найденные решения
3. DesertPunk 14.03.23 10:46 Сейчас в теме
(1) Попробуй добавить проверку на NULL
user1816391; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 14.03.23 10:44 Сейчас в теме
(1) Тип какой у полей которые складываем?
3. DesertPunk 14.03.23 10:46 Сейчас в теме
(1) Попробуй добавить проверку на NULL
user1816391; +1 Ответить
4. user1816391 14.03.23 10:50 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот