Задать вопрос
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.

Как провести группировку?

Есть таблица вида [Date],[Time],[Name],[IP], в которой регистрируются входы пользователей на ПК.
За 1 день пользователь может зайти несколько раз с разных ПК. Задача вытащить из списка только первые входы.
С помощью Тостера уже есть скрипт, который вытаскивает этот набор, но без [IP]

select dateadd(day, datediff(day, 0, CONVERT(datetime, LEFT(CONVERT(VARCHAR, [Date]+' '+[Time], 103), 19))), 0) [Date], convert (char(8), min(CONVERT(datetime, LEFT(CONVERT(VARCHAR, [Date]+' '+[Time], 103), 19))), 108) [Time], 
[Name]
from [OVB].[dbo].[Logon]
group by dateadd(day, datediff(day, 0, CONVERT(datetime, LEFT(CONVERT(VARCHAR, [Date]+' '+[Time], 103), 19))), 0), [Name]
order by [Name],[Date]

Пока без [IP] - все классно, в выборке только первые входы. Как только в запрос добавляю [IP]
select dateadd(day, datediff(day, 0, CONVERT(datetime, LEFT(CONVERT(VARCHAR, [Date]+' '+[Time], 103), 19))), 0) [Date], convert (char(8), min(CONVERT(datetime, LEFT(CONVERT(VARCHAR, [Date]+' '+[Time], 103), 19))), 108) [Time], [Name], [IP]
from [OVB].[dbo].[Logon]
group by dateadd(day, datediff(day, 0, CONVERT(datetime, LEFT(CONVERT(VARCHAR, [Date]+' '+[Time], 103), 19))), 0), [Name], [IP]
order by [Name],[Date]

- в выборке получается первый вход по каждому человеку по каждому [IP]. Как выбрать только первый вход в дне, без учета [IP]? Интуитивно понимаю, что его не должно быть в группировке
  • Вопрос задан
  • 218 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
lasalas
@lasalas
.NET Architect
SELECT * 
FROM Logon
JOIN 
(
SELECT [Date] D, MIN([Time]) T
FROM Logon
GROUP BY [Date]
) X
ON [Date]=D AND [Time]=T
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы