|
Запрос к регистру ШтатноеРасписание | ☑ | ||
---|---|---|---|---|
0
capllary_
surgut 30.09.15
✎
13:01
|
Господа, подскажите как допилить запрос, чтоб при получении данных с Рг ШтатноеРасписание, если КоличествоСтавок > количества фактических работающих сотрудников, запрос выдавал еще строки без поля Сотрудник до КоличествоСтавок.
Т.е. к примеру есть в Рг ШтатноеРасписание запись с измерением "Должность" и значением бухгалтер. У этой записи КоличествоСтавок = 5. Сотрудников, работающих в этой должности 3. В выборке этого запроса есть 3 строчки, у которых должность бухгалтер, а надо 5, эти 3 и еще 2 со значением в поле сотрудник "Нет сотрудника". Вот собственно сам запрос: ВЫБРАТЬ РАЗЛИЧНЫЕ РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник ПОМЕСТИТЬ Сотрудники ИЗ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаНач, ) КАК РаботникиОрганизацийСрезПоследних ГДЕ (ВЫБОР КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1) И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &ДатаНач ТОГДА РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостоянияЗавершения ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) ИЛИ РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1) И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &ДатаКон И РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостоянияЗавершения <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)) ОБЪЕДИНИТЬ ВЫБРАТЬ РАЗЛИЧНЫЕ РаботникиОрганизаций.Сотрудник ИЗ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций ГДЕ РаботникиОрганизаций.Период МЕЖДУ &ДатаНач И &ДатаКон И РаботникиОрганизаций.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПРичиныИзмененияСостояния.Увольнение) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РаботникиОрганизацийСрезПоследних.Сотрудник, РаботникиОрганизацийСрезПоследних.Должность ПОМЕСТИТЬ ДолжностиСотрудников ИЗ Сотрудники КАК Сотрудники ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаКон, ) КАК РаботникиОрганизацийСрезПоследних ПО Сотрудники.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ШтатноеРасписаниеОрганизацийСрезПоследних.ПодразделениеОрганизации КАК ПодразделениеОрганизации, ШтатноеРасписаниеОрганизацийСрезПоследних.Должность КАК Должность, ШтатноеРасписаниеОрганизацийСрезПоследних.КоличествоСтавок КАК Количество, ЕСТЬNULL(ДолжностиСотрудников.Сотрудник, "Нет сотрудника") КАК Сотрудник, ШтатноеРасписаниеОрганизацийСрезПоследних.МаксимальнаяТарифнаяСтавка КАК ТарифнаяСтавка, ВЫБОР КОГДА ДолжностиСотрудников.Сотрудник В (&БезРК) ТОГДА 0 ИНАЧЕ 70 КОНЕЦ КАК РКПроцент, 0 КАК ПремияКвартал ИЗ РегистрСведений.ШтатноеРасписаниеОрганизаций.СрезПоследних(&ДатаКон, ) КАК ШтатноеРасписаниеОрганизацийСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ ДолжностиСотрудников КАК ДолжностиСотрудников ПО ШтатноеРасписаниеОрганизацийСрезПоследних.Должность = ДолжностиСотрудников.Должность СГРУППИРОВАТЬ ПО ШтатноеРасписаниеОрганизацийСрезПоследних.ПодразделениеОрганизации, ШтатноеРасписаниеОрганизацийСрезПоследних.Должность, ШтатноеРасписаниеОрганизацийСрезПоследних.КоличествоСтавок, ШтатноеРасписаниеОрганизацийСрезПоследних.МаксимальнаяТарифнаяСтавка, ЕСТЬNULL(ДолжностиСотрудников.Сотрудник, "Нет сотрудника"), ВЫБОР КОГДА ДолжностиСотрудников.Сотрудник В (&БезРК) ТОГДА 0 ИНАЧЕ 70 КОНЕЦ УПОРЯДОЧИТЬ ПО ПодразделениеОрганизации, Сотрудник ИТОГИ ПО ПодразделениеОрганизации АВТОУПОРЯДОЧИВАНИЕ |
|||
1
Nuobu
30.09.15
✎
13:20
|
ВЫБРАТЬ
ВложенныйЗапрос.НомерДняИзДиапазона ПОМЕСТИТЬ ВТПорядковыеНомера ИЗ (ВЫБРАТЬ cc.c * 10 + dd.d КАК НомерДняИзДиапазона ИЗ (ВЫБРАТЬ 0 КАК c ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК cc, (ВЫБРАТЬ 0 КАК d ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК dd) КАК ВложенныйЗапрос ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ АвансыРаботникамОрганизаций.Сотрудник, АвансыРаботникамОрганизаций.СуммаАванса, ВТПорядковыеНомера.НомерДняИзДиапазона ИЗ РегистрСведений.АвансыРаботникамОрганизаций КАК АвансыРаботникамОрганизаций ЛЕВОЕ СОЕДИНЕНИЕ ВТПорядковыеНомера КАК ВТПорядковыеНомера ПО АвансыРаботникамОрганизаций.СуммаАванса >= ВТПорядковыеНомера.НомерДняИзДиапазона |
|||
2
capllary_
surgut 30.09.15
✎
13:24
|
(1) Направление мысли интересное, спасибо, сейчас попробую.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |