Запросить все строки на сервере, где 2 столбца совпадают не менее n раз, с несколькими условиями
У меня есть таблица в SQL Operations Studio (SQL Server) со столбцами A, B, C, D. Я хочу запросить все строки со следующими условиями:
РЕДАКТИРОВАНИЕ С ОБРАЗЦОМ ДАННЫХ
A B C D
1 a b c r
2 g b c r
3 n h f r
4 k u e z
5 h i e z
- Значения в столбце C & D совпадают не менее 2 раз
- Значение в столбце D должно появляться не менее 3 раз
Вернуть:
A B C D
1 a b c r
2 g b c r
3 n h f r
1 ответ
Вот один простой способ сделать это - использовать cte с парой count...over
выражения.
Сначала создайте и заполните образец таблицы (пожалуйста, сохраните этот шаг в ваших будущих вопросах)
DECLARE @T AS TABLE
(
A char(1),
B char(1),
C char(1),
D char(1)
);
INSERT INTO @T (A, B, C, D) VALUES
('a', 'b', 'c', 'r'),
('g', 'b', 'c', 'r'),
('n', 'h', 'f', 'r'),
('k', 'u', 'e', 'z'),
('h', 'i', 'e', 'z');
Затем, cte:
WITH cte AS
(
SELECT A, B, C, D,
COUNT(*) OVER(PARTITION BY C, D) As CDCount,
COUNT(*) OVER(PARTITION BY D) As DCount
FROM @T
)
Запрос:
SELECT A, B, C, D
FROM cte
WHERE CDCount >= 2
AND DCount >= 3
ORDER BY A
Результаты:
A B C D
a b c r
g b c r