Если я вас правильно понимаю, вы можете попробовать следующий подход, используя оконный SUM()
без предложения ORDER BY
(для использования строк во всем разделе):
Таблица:
CREATE TABLE #Data (
ColumnA int,
ColumnB varchar(10)
)
INSERT INTO #Data
(ColumnA, ColumnB)
VALUES
(1, 'Group A'),
(1, 'Group B'),
(2, 'Group A'),
(2, 'Group C'),
(3, 'Group C'),
(3, 'Group E')
Заявление:
SELECT
ColumnA,
ColumnB,
CASE
WHEN SUM(CASE WHEN ColumnB IN ('Group A', 'Group B') THEN 1 ELSE 0 END) OVER (PARTITION BY ColumnA) > 0 THEN 'Group A'
ELSE ColumnB
END AS ColumnC
FROM #Data
Результат:
ColumnA ColumnB ColumnC
1 Group A Group A
1 Group B Group A
2 Group A Group A
2 Group C Group A
3 Group C Group C
3 Group E Group E