Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывод уникальных данных через DISTINCT / 6 сообщений из 6, страница 1 из 1
18.09.2020, 11:36
    #40000192
Artlian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод уникальных данных через DISTINCT
Всем добрый день.
Пытаюсь вывести данные с SQL базы турникета. Мне нужно получить список вошедших людей. Даже если они заходили несколько раз, мне необходим уникальный список, но с временем первого входа за сегодняшний день. dbo.pLogData.TimeVal -это дата и время, dbo.PDivision.ID - номер департамента.
Пробовал делать так, все равно все равно выводит людей с временем каждого их захода. Прошу вашей помощи.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
SELECT  DISTINCT dbo.pList.Section, dbo.pList.MidName, dbo.pList.FirstName, dbo.pList.Name, MIN(dbo.pLogData.TimeVal), dbo.pLogData.Remark,dbo.PDivision.ID
FROM            dbo.pList INNER JOIN
                         dbo.PDivision ON dbo.pList.Section = dbo.PDivision.ID INNER JOIN
                         dbo.pLogData ON dbo.pList.ID = dbo.pLogData.HozOrgan
WHERE        (CONVERT(date, dbo.pLogData.TimeVal) = '2020-09-17') AND (CONVERT(time, dbo.pLogData.TimeVal) BETWEEN '05:00' AND '07:00') AND (dbo.PDivision.ID = '3') AND 
                         (dbo.pLogData.Remark = '1: Вход   Проходная № 1,   Считыватель 1, Прибор 1') OR
                         (CONVERT(date, dbo.pLogData.TimeVal) = '2020-09-17') AND (CONVERT(time, dbo.pLogData.TimeVal) BETWEEN '05:00' AND '07:00') AND (dbo.PDivision.ID = '4') AND 
                         (dbo.pLogData.Remark = '1: Вход   Проходная № 1,   Считыватель 1, Прибор 1') OR
                         (CONVERT(date, dbo.pLogData.TimeVal) = '2020-09-17') AND (CONVERT(time, dbo.pLogData.TimeVal) BETWEEN '05:00' AND '07:00') AND (dbo.PDivision.ID = '10') AND 
                         (dbo.pLogData.Remark = '1: Вход   Проходная № 1,   Считыватель 1, Прибор 1') OR
                         (CONVERT(date, dbo.pLogData.TimeVal) = '2020-09-17') AND (CONVERT(time, dbo.pLogData.TimeVal) BETWEEN '05:00' AND '07:00') AND (dbo.PDivision.ID = '11') AND 
                         (dbo.pLogData.Remark = '1: Вход   Проходная № 1,   Считыватель 1, Прибор 1') OR
                         (CONVERT(date, dbo.pLogData.TimeVal) = '2020-09-17') AND (CONVERT(time, dbo.pLogData.TimeVal) BETWEEN '05:00' AND '07:00') AND (dbo.PDivision.ID = '12') AND 
                         (dbo.pLogData.Remark = '1: Вход   Проходная № 1,   Считыватель 1, Прибор 1') OR
                         (CONVERT(date, dbo.pLogData.TimeVal) = '2020-09-17') AND (CONVERT(time, dbo.pLogData.TimeVal) BETWEEN '05:00' AND '07:00') AND (dbo.PDivision.ID = '13') AND 
                         (dbo.pLogData.Remark = '1: Вход   Проходная № 1,   Считыватель 1, Прибор 1') OR
                         (CONVERT(date, dbo.pLogData.TimeVal) = '2020-09-17') AND (CONVERT(time, dbo.pLogData.TimeVal) BETWEEN '05:00' AND '07:00') AND (dbo.PDivision.ID = '15') AND 
                         (dbo.pLogData.Remark = '1: Вход   Проходная № 1,   Считыватель 1, Прибор 1') OR
                         (CONVERT(date, dbo.pLogData.TimeVal) = '2020-09-17') AND (CONVERT(time, dbo.pLogData.TimeVal) BETWEEN '05:00' AND '07:00') AND (dbo.PDivision.ID = '17') AND 
                         (dbo.pLogData.Remark = '1: Вход   Проходная № 1,   Считыватель 1, Прибор 1') OR
                         (CONVERT(date, dbo.pLogData.TimeVal) = '2020-09-17') AND (CONVERT(time, dbo.pLogData.TimeVal) BETWEEN '05:00' AND '07:00') AND (dbo.PDivision.ID = '20') AND 
                         (dbo.pLogData.Remark = '1: Вход   Проходная № 1,   Считыватель 1, Прибор 1') OR
                         (CONVERT(date, dbo.pLogData.TimeVal) = '2020-09-17') AND (CONVERT(time, dbo.pLogData.TimeVal) BETWEEN '05:00' AND '12:00') AND (dbo.PDivision.ID = '7') AND 
                         (dbo.pLogData.Remark = '1: Вход   Проходная № 1,   Считыватель 1, Прибор 1')

GROUP BY dbo.pList.Section, dbo.pList.MidName, dbo.pList.FirstName, dbo.pList.Name, dbo.pLogData.TimeVal, dbo.pLogData.Remark,dbo.PDivision.ID
...
Рейтинг: 0 / 0
18.09.2020, 11:38
    #40000193
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод уникальных данных через DISTINCT
Artlian,

ROW_NUMBER почитайте
...
Рейтинг: 0 / 0
18.09.2020, 11:48
    #40000201
istrebitel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод уникальных данных через DISTINCT
Из group by dbo.pLogData.TimeVal уберите.
...
Рейтинг: 0 / 0
18.09.2020, 11:50
    #40000205
Artlian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод уникальных данных через DISTINCT
istrebitel
Из group by dbo.pLogData.TimeVal уберите.

Спасибо тебе огромное! Помогло.
...
Рейтинг: 0 / 0
18.09.2020, 12:04
    #40000213
istrebitel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод уникальных данных через DISTINCT
Код: sql
1.
CONVERT(date, dbo.pLogData.TimeVal) = '2020-09-17')

плохое решение, индексы не будут работать. Если надо выбрать данные за день
Код: sql
1.
2.
where
	dbo.pLogData.TimeVal  >=  convert(datetime, '2020-09-17', 120) and dbo.pLogData.TimeVal  <  convert(datetime, '2020-09-18', 120)

А лучше параметром
Код: sql
1.
2.
3.
4.
5.
declare
	@DateRep datetime = convert(datetime, '17.09.2020', 104)

where
	dbo.pLogData.TimeVal >= @DateRep and dbo.pLogData.TimeVal < dateadd(day, 1, @DateRep)
...
Рейтинг: 0 / 0
18.09.2020, 12:55
    #40000234
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод уникальных данных через DISTINCT
istrebitel
Код: sql
1.
CONVERT(date, dbo.pLogData.TimeVal) = '2020-09-17')


плохое решение, индексы не будут работать.
Практика показывает, что будут. Здесь неоднократно обсуждалось
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывод уникальных данных через DISTINCT / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]