#sql #sql-server
Вопрос:
Я пытаюсь выяснить все идентификаторы участников, у которых более 2 записей на разные даты в одном классе.
---------- ------------ ------- -----------
| MemberId | Date | Class | |
---------- ------------ ------- -----------
| 118111 | 2/18/2020 | A | Valid |
| 118111 | 10/15/2020 | A | Valid |
| 118216 | 1/31/2020 | B | Valid |
| 118216 | 5/16/1981 | B | Valid |
| 118291 | 6/9/2020 | A | Valid |
| 118291 | 12/5/2020 | A | Valid |
| 118533 | 4/9/2020 | A | Not valid |
| 118533 | 11/11/2020 | B | Not valid |
| 118533 | 7/22/2020 | C | Valid |
| 118533 | 10/25/2020 | C | Valid |
| 118293 | 3/30/2020 | A | Not valid |
| 118293 | 3/30/2020 | A | Not valid |
| 118499 | 4/16/2020 | B | Valid |
| 118499 | 7/26/2020 | B | Valid |
| 118499 | 3/25/2020 | A | Not valid |
---------- ------------ ------- -----------
Я сделал запрос, который проверяет только 2 записи, но не смог найти решение для проверки более 2 записей.
select mc.*
FROM table1 AS mc
JOIN table1 AS ma ON ma.memberid = mc.memberid
AND ma.date != mc.date
AND ma.class = mc.class
Ответ №1:
Предполагая, что вы просто хотите memberid
, чтобы вы могли нам HAVING
:
SELECT memberid
FROM dbo.YourTable
GROUP BY memberid
HAVING COUNT(DISTINCT [Date]) > 2;
Комментарии:
1. Но мне тоже нужно проверить класс.
2. Добавить
Class
вGROUP BY
иSELECT
@AnantGupta ? Вы не говорите нам, каковы ожидаемые результаты, поэтому я сделал небольшое предположение.