powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывод уникальных данных через DISTINCT
6 сообщений из 6, страница 1 из 1
Вывод уникальных данных через DISTINCT
    #40000192
Artlian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день.
Пытаюсь вывести данные с 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
Вывод уникальных данных через DISTINCT
    #40000193
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Artlian,

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

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


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


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