powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удалить строки из выборки с повторяющимся полем
2 сообщений из 2, страница 1 из 1
Удалить строки из выборки с повторяющимся полем
    #39633113
zlobnipartizan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Возникла проблема следующего характера.
SQL-запросом формирую выборку из базы.

Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
SET NOCOUNT ON
DECLARE @StartDate DateTime
DECLARE @EndDate DateTime
SET @StartDate = DateAdd(mi,-5,GetDate())
SET @EndDate = GetDate()
SET NOCOUNT OFF

SELECT  T1.DateTime, T1.TimeConvert, T1.PSM,T2.COUNTS,T2.Interval FROM
(SELECT  temp1.DateTime, temp1.PSM, temp2.TimeConvert 
FROM 
(SELECT History.TagName, DateTime, Value as PSM, StartDateTime
 FROM History
 WHERE History.TagName IN ( 'GZU_11.ZAMERPSM')

 AND wwRetrievalMode = 'Cyclic'
 AND wwCycleCount = 100
 AND wwQualityRule = 'Extended'
 AND wwVersion = 'Latest'
 AND DateTime >= @StartDate
 AND DateTime <= @EndDate
) temp1

Inner join

(SELECT History.TagName, DateTime, vValue as TimeConvert, StartDateTime
 FROM History
 WHERE History.TagName IN ( 'GZU_11.ZAMERTIMECONVERT')

 AND wwRetrievalMode = 'Cyclic'
 AND wwCycleCount = 100
 AND wwQualityRule = 'Extended'
 AND wwVersion = 'Latest'
 AND DateTime >= @StartDate
 AND DateTime <= @EndDate
) temp2
ON temp1.DateTime=temp2.DateTime
WHERE temp1.StartDateTime >= @StartDate) T1

inner join

(SELECT  temp1.DateTime, temp1.COUNTS, temp2.Interval 
FROM 
(SELECT History.TagName, DateTime, Value as COUNTS, StartDateTime
 FROM History
 WHERE History.TagName IN ( 'GZU_11.ZAMERCOUNT')

 AND wwRetrievalMode = 'Cyclic'
 AND wwCycleCount = 100
 AND wwQualityRule = 'Extended'
 AND wwVersion = 'Latest'
 AND DateTime >= @StartDate
 AND DateTime <= @EndDate
) temp1

Inner join

(SELECT History.TagName, DateTime, Value as Interval, StartDateTime
 FROM History
 WHERE History.TagName IN ( 'GZU_11.ZAMERINTERVAL')

 AND wwRetrievalMode = 'Cyclic'
 AND wwCycleCount = 100
 AND wwQualityRule = 'Extended'
 AND wwVersion = 'Latest'
 AND DateTime >= @StartDate
 AND DateTime <= @EndDate
) temp2
ON temp1.DateTime=temp2.DateTime
WHERE temp1.StartDateTime >= @StartDate) T2
ON T1.DateTime=T2.DateTime



В результате получаю
https://ibb.co/hvszgn][img] https://preview.ibb.co/gP07Z7/CDNG2.jpg [/img]

Задача получить выборку без повторяющихся записей, а уникальное поле TimeConvert. Изменение TimeConvert значит запись в таблицу новой строки, а лишние отбросить.

Чтобы в итоге получилось
DataTime PSM TimeConvert Counts Interval
19.04.2018 10:33:50 6 Пт апр 13 20:39:31 2018 5929 240
19.04.2018 10:33:59 7 Пт апр 13 20:45:31 2018 1024 240


Будьте добры, подскажите реализацию запроса.
С SQL столкнулся по работе первый раз, некоторые очевидные вещи для меня не очевидны.
...
Рейтинг: 0 / 0
Удалить строки из выборки с повторяющимся полем
    #39633128
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zlobnipartizan,
Лень разбираться в логике, но для результата можно так:

Код: sql
1.
2.
3.
4.
SELECT  Min(T1.DateTime) as DateTime, T1.TimeConvert, T1.PSM,T2.COUNTS,T2.Interval FROM
/*Остальное без изменений 
и в конце:*/
Group by T1.TimeConvert, T1.PSM,T2.COUNTS,T2.Interval
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удалить строки из выборки с повторяющимся полем
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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