У меня есть таблица логинов, который выглядит следующим образом: Таблицавыбрать столбцы в строки сгруппированы по столбцам значения
логинов
Emp_ID Created | Action
1 20/01/2016 10:44:42 AM login
1 20/01/2016 4:45:49 PM logout
1 20/01/2016 6:30:13 PM logout
1 21/01/2016 8:46:28 AM login
1 21/01/2016 9:46:42 AM login
1 21/01/2016 1:46:46 PM logout
1 22/01/2016 8:49:21 AM login
1 22/01/2016 1:49:27 PM logout
1 22/01/2016 2:29:53 PM login
1 22/01/2016 2:30:13 PM logout
3 22/01/2016 2:42:06 PM login
1 22/01/2016 9:57:22 PM login
1 22/01/2016 10:22:23 PM logout
1 23/01/2016 8:01:47 AM login
1 23/01/2016 9:01:58 AM logout
3 23/01/2016 8:02:06 AM login
3 23/01/2016 9:02:28 AM logout
Стол сотрудников
| ID | Fname | Lname |
|----|-------|-------|
| 1 | James | Brown |
| 2 | Mark | Bond |
| 3 | Kemi | Ojo |
В результате я получил
| created | login | logout | Employee | Emp_ID |
|------------|----------|----------|-------------|--------|
| 2016-01-20 | 10:44:42 | 18:30:13 | James Brown | 1 |
| 2016-01-21 | 08:46:28 | 13:46:46 | James Brown | 1 |
| 2016-01-22 | 08:49:21 | 22:22:23 | James Brown | 1 |
| 2016-01-22 | 14:42:06 | 22:22:23 | Kemi Ojo | 3 |
| 2016-01-23 | 08:01:47 | 09:02:28 | James Brown | 1 |
| 2016-01-23 | 08:02:06 | 09:02:28 | Kemi Ojo | 3 |
что я пробовал:
SELECT
CAST(LI.created AS DATE) AS created,
MIN(CAST(LI.created AS TIME)) AS login,
MAX(CAST(LO.created AS TIME)) AS logout,
e.fname+' '+e.lname Employee, li.Emp_ID
FROM
Logins LI
LEFT OUTER JOIN Logins LO ON
LO.action = 'logout' AND
CAST(LO.created AS DATE) = CAST(LI.created AS DATE)
JOIN dbo.Employees AS E ON E.ID = li.Emp_ID
WHERE
LI.action = 'login'
GROUP BY
CAST(LI.created AS DATE), E.fname + ' ' + E.lname, li.Emp_ID
Но результат неправильный.
Обратите внимание, что последние два результата для разных пользователей одинаковы. например
09:02:28
появляется вместо9:01:58
Также у меня есть проблемы с логином без выхода из системы emp_id = 3. Это происходит, когда приложение неожиданно отключается.
3, как я могу поместить 00:00:00 в случае, когда нет выхода из системы 4. Или что бы ваше предложение о том, что делать в этом случае?
нужно выбрать результирующий набор, который выглядит следующим образом:
| created | login | logout | Employee | Emp_ID |
|------------|----------|----------|-------------|--------|
| 2016-01-20 | 10:44:42 | 18:30:13 | James Brown | 1 |
| 2016-01-21 | 08:46:28 | 13:46:46 | James Brown | 1 |
| 2016-01-22 | 08:49:21 | 22:22:23 | James Brown | 1 |
| 2016-01-22 | 14:42:06 | 00:00:00 | Kemi Ojo | 3 |
| 2016-01-23 | 08:01:47 | 09:01:58 | James Brown | 1 |
| 2016-01-23 | 08:02:06 | 09:02:28 | Kemi Ojo | 3 |
Это очень хороший вопрос: очистить, образцы данных, ваши собственные попытки, неправильный вывод, ожидаемый результат. Thx для этого, +1 с моей стороны! – Shnugo
Да. Ссылка на этот вопрос должна быть указана в разделе «как задавать вопрос» специально для вопросов SQL. – Utsav