2016-10-11 3 views
0

Мне нужно создать запрос выбора, который будет рассматривать список сотрудников и определить, находятся ли они или нет. таблица будет иметь следующие данные:Добавление индикатора Check in-Out в выражении select sql

EmployeeID, дата/время

Мне нужно найти какой-либо сотрудник, который имеет более чем 1 запись, а затем переключить новый столбец, чтобы определить, если работник проверяется в или на основе на дату/время.

Ex.

999, 2016-01-01: 9:00  -- This would have a column with 1 added 
999, 2016-01-01: 15:00 -- This would have a column with 2 added 
999, 2016-01-01: 18:00 -- This would go back to 1 

Мне нужно это, чтобы посмотреть все строки в таблице. Это возможно. У меня нет доступа к внесению изменений в исходную таблицу.

+2

Какие СУБД вы используете? rowno modulo 2? – jarlh

+0

Вы можете попробовать выбрать четное или нечетное число посещений? – Efekan

ответ

0

Я надеюсь, что он должен работать

SELECT employeeid,Cast (date/time as date), 
    (RANK() OVER 
    (PARTITION BY employeeid ORDER BY date/time)) as 'in/out' 
    FROM table 
    GROUP BY employeeid,Cast (date/time as date) 
+0

Я использую mssql 2012. – luger

+0

Еще раз проверьте, что работа в mssql 2012 –

+0

Мне нужно сделать это для всех строк. Если у сотрудника 3 строки, мне нужно увидеть 3 строки не только последней. Максимальное значение теперь будет содержать все строки правильно? – luger

0

Возможно, проверьте нечетные или четные цифры?

SELECT 
Employee_id, 
Date, 
IF(COUNT(*) % 2 = 0, 1, 2) AS 'Lastvisit' 
FROM 
table 
+0

Это недопустимый (стандартный) SQL. –

+0

Что такое стандартный SQL? – Efekan

+0

В стандарте SQL нет «IF», ​​а одинарные кавычки предназначены для символьных констант, а не для идентификаторов (так что «как« Lastvisit »должен быть« как »Lastvisit»). Также оператор '%' является нестандартным. –

Смежные вопросы