Как сохранить только одну строку данных и удалить другие в трехмесячном окне? - PullRequest
0 голосов
/ 23 мая 2018

У меня есть таблица с атрибутами date, name, sex, id, status дата в формате datetime.

Я хочу сгруппировать по name, sex, id и сохранить только одни данные в трехмесячном окне и удалить другие строки.

Например

2017-12-01, A, MALE, 123
2017-10-01, A, MALE, 123
2017-09-01, A, MALE, 123
2016-08-02, A, MALE, 123
2017-09-01, B, MALE, 123
2016-08-02, B, MALE, 123

Я хочу сохранить любую строку в трехмесячном окне после группировки по этим трем атрибутам

2017-09-01, A, MALE, 123 (any first three rows work)
2016-08-02, A, MALE, 123
2017-09-01, B, MALE, 123
2016-08-02, B, MALE, 123

Как это можно сделать в SQL, возможно ли это?

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Это решение будет в порядке:

select min(date) over (partition by name,sex,id) as dmin,
max(date) over (partition by name,sex,id) as dmax
from table
where datediff(mm,dmin,dmax)<3
0 голосов
/ 23 мая 2018

Может быть, это поможет:

select name,sex,id
from table
group by name,sex,id
having datediff(mm,date,getdate())<3

, и если вы хотите удалить, вы должны изменить на datediff> 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...