PDA

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



AsupRabota123
14.03.2023, 10:05
Запрос с использованием оператора выбора не объединяет в одну строку, вот весь запрос:


ВЫБРАТЬ
ИсторияНачисленийПоШтатно муРасписанию.ПозицияШтатн� �гоРасписания КАК ПозицияШтатногоРасписания ,
ИсторияНачисленийПоШтатно муРасписанию.Дата КАК Дата,
ИсторияПоказателейПоШтатн омуРасписанию.ПозицияШтат� �огоРасписания КАК ПозицияШтатногоРасписания 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Характер) в одну строку и вернуть ее в столбце с псевдонимом "Свойства".

TheDevil
23.03.2023, 02:10
Почему Вы не рассматриваете значение NULL?