как удалить результаты, где я получаю дубликат в 1 столбце - PullRequest
1 голос
/ 26 марта 2020

Это мой первый вопрос, заданный на этом сайте. Надеюсь, я правильно понял :-) Я искал похожие вопросы, но все, что я могу найти, - это как удалить дублирующиеся результаты, если вся строка одинакова, я пробовал DISTINCT и GROUP BY, но ни один из них не дает того, что я хочу.

Мой код:

SELECT
[ID-HNO-3] AS number,
[ST-STS-61] AS modality
FROM
[RENALPLUS].[dbo].[tbl_Change_of_Status]
WHERE
[ST-STS-61] = 'akc'
OR
[ST-STS-61] = 'neph op'
GROUP BY
[ID-HNO-3], [ST-STS-61]
ORDER BY
[number] ASC

Это дает результаты в соответствии с:

column 1 | column2
__________________
1        | neph op
2        | neph op
3        | neph op
4        | neph op
5        | neph op
6        | neph op
6        | AKC
7        | neph op
8        | neph op
9        | neph op
10       | neph op

Ожидаемый результат:

column 1 | column2
__________________
1        | neph op
2        | neph op
3        | neph op
4        | neph op
5        | neph op
6        | AKC
7        | neph op
8        | neph op
9        | neph op
10       | neph op

Ни один столбец не является ключ.

Каждый результат также имеет дату, связанную с ним, и каждая дата уникальна, но не ключ

, вы увидите, что столбец 1 дублируется 6.

Когда это В этом случае мне нужно просто вернуть 6 один раз, где 6 имеет самую последнюю дату

Может кто-нибудь объяснить, как это сделать, поскольку мне кажется, что я не могу узнать, как это делается

Спасибо Вам за помощь.

1 Ответ

2 голосов
/ 26 марта 2020

Вы можете использовать оконные функции:

SELECT [ID-HNO-3] AS number, [ST-STS-61] AS modality
FROM (SELECT cos.*,
             ROW_NUMBER() OVER (PARTITION BY [ID-HNO-3] ORDER BY date DESC) as seqnum
      FROM [RENALPLUS].[dbo].[tbl_Change_of_Status] cos
      WHERE [ST-STS-61] IN ('akc', 'neph op')
     ) cos
WHERE seqnum = 1
ORDER BY [number] ASC
...