Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Отчет по опоздавшим  [new]
Persik_85
Member

Откуда: Kazakhstan
Сообщений: 41
Добрый день! Давно здесь не была. 3 года прошло! Мне нужна Ваша помощь! Например: Сотрудников не должны попадать в отчет по опоздавшим. А остальное в отчет попадали. Как это сделать? Подскажите пожалуйста!
25 сен 18, 12:27    [21685274]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Пусть не опаздывают. Следующий
25 сен 18, 12:28    [21685275]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
londinium
Member

Откуда: Киев
Сообщений: 1139
Persik_85,
начать с точной постановки задачи. Кто и куда не должен попадать, почему именно эти люди и так далее
25 сен 18, 12:29    [21685276]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
Persik_85
Member

Откуда: Kazakhstan
Сообщений: 41
TaPaK,

К сообщению приложен файл. Размер - 36Kb
25 сен 18, 12:58    [21685331]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
londinium
Persik_85,
начать с точной постановки задачи. Кто и куда не должен попадать, почему именно эти люди и так далее


за 3 года разучилась
25 сен 18, 13:04    [21685338]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
Persik_85
Member

Откуда: Kazakhstan
Сообщений: 41
londinium,

У меня 4 отчетов: отчет по опоздавшим сотрудникам; отчет ушедшим раньше начала обеденного перерыва; отчет опоздавшего с обеденного перерыва; отчет ушедшим раньше положенного времени. Например: 50 сотрудников из 3 сотрудников не должны попадать в отчет опоздавшим. а остальное попадали в отчете. Как мне писать? Как это реализовать? Подскажите!!!
ALTER procedure [dbo].[Late]
as
declare @date_time_now datetime
set @date_time_now=getdate()
if exists (select * from Calendar where [date]=cast(@date_time_now as date) and is_holiday=1)
	return

exec Update_Employee_cardno_acedb

declare @t table (rw nvarchar(100), nm nvarchar(100), ps nvarchar(100), st char(10), et char(10))
declare @rw nvarchar(100),@nm nvarchar(100),@ps nvarchar(100),@st char(10),@et char(10),@dpt nvarchar(100),@dpt_ nvarchar(100)
set @dpt_=''
declare cur_late cursor for
		select	ROW_NUMBER() over (order by d.id) rn,
				e.last_name+' '+e.first_name+' '+isnull(e.middle_name,'') [name],
				isnull(p.position_name,'-') position,
				t.start_time,
				coalesce(convert(char(5),ev.et,14),'-') event_time,
				d.dept_name
		from Employees.dbo.Employees e
		left join Employees.dbo.EmployeeStartTime t
			on e.employee_start_time_id=t.id
		left join Employees.dbo.EmployeePosition p
			on e.position_id=p.id
		inner join Employees.dbo.Department d
			on e.dept_id=d.id
		left join
		(
			select e.stringValue cardno, min(e.eventCreationTime) et
			from BIS.BISEventLog.dbo.vw_LogEvent e
			where e.eventCreationTime between 
						convert(char(11),@date_time_now,21)+'01:00' and @date_time_now
					and e.addressId in (8444,77,16471,16472,16631,16632,18606,18608) -- вход
					and e.eventValueName='CARDNO'
					and e.eventtypeid=1
			group by e.stringValue
		) ev 
			on ev.cardno=e.card_no collate Latin1_General_CI_AS
		where e.active=1
				and (ev.et>convert(char(11),@date_time_now,21)+dateadd(minute,5,t.start_time)--'08:34:59' 
						or ev.et is null)
25 сен 18, 13:10    [21685344]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
сурово в казахстане гайки закручивают...
25 сен 18, 13:12    [21685347]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
Посетитель
Member

Откуда:
Сообщений: 1384
Persik_85
londinium,

У меня 4 отчетов: отчет по опоздавшим сотрудникам; отчет ушедшим раньше начала обеденного перерыва; отчет опоздавшего с обеденного перерыва; отчет ушедшим раньше положенного времени. Например: 50 сотрудников из 3 сотрудников не должны попадать в отчет опоздавшим. а остальное попадали в отчете. Как мне писать? Как это реализовать? Подскажите!!!
+
ALTER procedure [dbo].[Late]
as
declare @date_time_now datetime
set @date_time_now=getdate()
if exists (select * from Calendar where [date]=cast(@date_time_now as date) and is_holiday=1)
	return

exec Update_Employee_cardno_acedb

declare @t table (rw nvarchar(100), nm nvarchar(100), ps nvarchar(100), st char(10), et char(10))
declare @rw nvarchar(100),@nm nvarchar(100),@ps nvarchar(100),@st char(10),@et char(10),@dpt nvarchar(100),@dpt_ nvarchar(100)
set @dpt_=''
declare cur_late cursor for
		select	ROW_NUMBER() over (order by d.id) rn,
				e.last_name+' '+e.first_name+' '+isnull(e.middle_name,'') [name],
				isnull(p.position_name,'-') position,
				t.start_time,
				coalesce(convert(char(5),ev.et,14),'-') event_time,
				d.dept_name
		from Employees.dbo.Employees e
		left join Employees.dbo.EmployeeStartTime t
			on e.employee_start_time_id=t.id
		left join Employees.dbo.EmployeePosition p
			on e.position_id=p.id
		inner join Employees.dbo.Department d
			on e.dept_id=d.id
		left join
		(
			select e.stringValue cardno, min(e.eventCreationTime) et
			from BIS.BISEventLog.dbo.vw_LogEvent e
			where e.eventCreationTime between 
						convert(char(11),@date_time_now,21)+'01:00' and @date_time_now
					and e.addressId in (8444,77,16471,16472,16631,16632,18606,18608) -- вход
					and e.eventValueName='CARDNO'
					and e.eventtypeid=1
			group by e.stringValue
		) ev 
			on ev.cardno=e.card_no collate Latin1_General_CI_AS
		where e.active=1
				and (ev.et>convert(char(11),@date_time_now,21)+dateadd(minute,5,t.start_time)--'08:34:59' 
						or ev.et is null)


50 из 3 - это сила.
Если у вас нет никаких признаков, а надо зашить исключения явно, то так и напишите
 and e.id not in(1,2,3)
25 сен 18, 13:13    [21685348]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
Persik_85
Member

Откуда: Kazakhstan
Сообщений: 41
256k
londinium
Persik_85,
начать с точной постановки задачи. Кто и куда не должен попадать, почему именно эти люди и так далее


за 3 года разучилась
25 сен 18, 13:13    [21685349]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
Persik_85
Member

Откуда: Kazakhstan
Сообщений: 41
Посетитель


50 из 3 - это сила.
Если у вас нет никаких признаков, а надо зашить исключения явно, то так и напишите
 and e.id not in(1,2,3)


У меня 850 сотрудников. Есть ли другой вариант?
25 сен 18, 13:18    [21685360]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Persik_85
Посетитель

50 из 3 - это сила.
Если у вас нет никаких признаков, а надо зашить исключения явно, то так и напишите
 and e.id not in(1,2,3)


У меня 850 сотрудников. Есть ли другой вариант?

оставьте только тех троих кого надо карать
25 сен 18, 13:22    [21685369]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
Посетитель
Member

Откуда:
Сообщений: 1384
Persik_85
Посетитель

50 из 3 - это сила.
Если у вас нет никаких признаков, а надо зашить исключения явно, то так и напишите
 and e.id not in(1,2,3)



У меня 850 сотрудников. Есть ли другой вариант?


наверняка. но вы же не озвучили, по каким признакам отделить мух от котлет.
25 сен 18, 13:22    [21685372]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
Persik_85
Member

Откуда: Kazakhstan
Сообщений: 41
ок. попробую.
25 сен 18, 13:31    [21685389]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Persik_85
londinium,

У меня 4 отчетов: отчет по опоздавшим сотрудникам; отчет ушедшим раньше начала обеденного перерыва; отчет опоздавшего с обеденного перерыва; отчет ушедшим раньше положенного времени. Например: 50 сотрудников из 3 сотрудников не должны попадать в отчет опоздавшим. а остальное попадали в отчете. Как мне писать? Как это реализовать? Подскажите!!!
[/src]


50 из 3-х - это вип
25 сен 18, 13:36    [21685399]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Persik_85,

Создайте таблицу с EmployeeId DateFrom DateInto проплативших сотрудников за определённый период. И исключайте их :)
25 сен 18, 13:40    [21685406]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
982183
Member

Откуда: VL
Сообщений: 3350
Электронная проходная?
Кто производитель и чей софт?
25 сен 18, 15:26    [21685557]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5162
982183
Электронная проходная?
Кто производитель и чей софт?

вангую
Bosch Security Systems
25 сен 18, 15:30    [21685563]     Ответить | Цитировать Сообщить модератору
 Re: Отчет по опоздавшим  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Persik_85
Посетитель

50 из 3 - это сила.
Если у вас нет никаких признаков, а надо зашить исключения явно, то так и напишите
 and e.id not in(1,2,3)


У меня 850 сотрудников. Есть ли другой вариант?


можно захрдкодировать тех опаздывающих, потом наверняка надо будет печатать листовки по ним, с возмущением жителей
25 сен 18, 15:53    [21685590]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить