Переключение на Главную Страницу Страницы: 1 2 [3]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Помогите с запросом (число прочтений - 11153 )
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите с запросом
Ответ #30 - 23. Мая 2013 :: 06:14
Печать  
Ёпта, у сотрудника не может быть Даты увольнения без даты приёма по-определению, если у вас так есть - кадровичку - вон из профессии
  
Наверх
 
IP записан
 
barbitura
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 135
Зарегистрирован: 22. Мая 2013
Пол: Мужской
Re: Помогите с запросом
Ответ #31 - 23. Мая 2013 :: 06:20
Печать  
Eprst писал(а) 23. Мая 2013 :: 06:14:
Ёпта, у сотрудника не может быть Даты увольнения без даты приёма по-определению, если у вас так есть - кадровичку - вон из профессии

Улыбка
Пример:
сотрудник принят был 1.1.2000 уволен 31.31.2008, потом заново принят с 1.1.2010 и работает по текуший момент. вот оно и получается что надо проверить даты приема и увольнения
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите с запросом
Ответ #32 - 23. Мая 2013 :: 06:24
Печать  
Еще раз, это всё в коде есть, ЭТО - работающий сотрудник, который попадает в выборку сейчас.
И у него, нет ДАТЫ Увольнения на данный момент


Всё, я понял что ты хочешь, на вот:

Код
Выбрать все
|select
|	Спр.id as [Сотрудничек $Справочник.Сотрудники]
|	,Приём.ДатаПриема as ДатаПриема
|from
|     $Справочник.Сотрудники as Спр (nolock)
|inner join
|	 (select
|		   $ПриказОПриеме.Сотрудник as Сотрудник
|		  ,Max($ПриказОПриеме.ДатаПриема) as ДатаПриема
|	  from $Документ.ПриказОПриеме as ПриказОПриеме (nolock)
|	  group by $ПриказОПриеме.Сотрудник ) as Приём on Приём.Сотрудник = Спр.id
|left join
|	 (select
|		   $ПриказОбУвольнении.Сотрудник as Сотрудник
|		  ,Max($ПриказОбУвольнении.ДатаУвольнения) as ДатаУвольнения
|	  from $Документ.ПриказОбУвольнении as ПриказОбУвольнении (nolock)
|	  group by $ПриказОбУвольнении.Сотрудник ) as Увольнение on Увольнение.Сотрудник = Спр.id
|where case when coalesce(Увольнение.ДатаУвольнения,'17530101')<Приём.ДатаПриема then
|	    '17530101'
|	 else coalesce(Увольнение.ДатаУвольнения,'17530101') end = '17530101'  

  
Наверх
 
IP записан
 
barbitura
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 135
Зарегистрирован: 22. Мая 2013
Пол: Мужской
Re: Помогите с запросом
Ответ #33 - 23. Мая 2013 :: 06:49
Печать  
Eprst писал(а) 23. Мая 2013 :: 06:24:
Еще раз, это всё в коде есть, ЭТО - работающий сотрудник, который попадает в выборку сейчас.
И у него, нет ДАТЫ Увольнения на данный момент


Всё, я понял что ты хочешь, на вот:

Код
Выбрать все
|select
|	Спр.id as [Сотрудничек $Справочник.Сотрудники]
|	,Приём.ДатаПриема as ДатаПриема
|from
|     $Справочник.Сотрудники as Спр (nolock)
|inner join
|	 (select
|		   $ПриказОПриеме.Сотрудник as Сотрудник
|		  ,Max($ПриказОПриеме.ДатаПриема) as ДатаПриема
|	  from $Документ.ПриказОПриеме as ПриказОПриеме (nolock)
|	  group by $ПриказОПриеме.Сотрудник ) as Приём on Приём.Сотрудник = Спр.id
|left join
|	 (select
|		   $ПриказОбУвольнении.Сотрудник as Сотрудник
|		  ,Max($ПриказОбУвольнении.ДатаУвольнения) as ДатаУвольнения
|	  from $Документ.ПриказОбУвольнении as ПриказОбУвольнении (nolock)
|	  group by $ПриказОбУвольнении.Сотрудник ) as Увольнение on Увольнение.Сотрудник = Спр.id
|where case when coalesce(Увольнение.ДатаУвольнения,'17530101')<Приём.ДатаПриема then
|	    '17530101'
|	 else coalesce(Увольнение.ДатаУвольнения,'17530101') end = '17530101'  




Спасибо большое Очень довольный
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите с запросом
Ответ #34 - 23. Мая 2013 :: 06:58
Печать  
В каждый подзапрос еще только надо воткнуть inner join _1sjourn с условием на closed
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 
ОтправитьПечать