Полагаю, вам нужно COALESCE
, чтобы вернуть ненулевое значение из значений Mobile
, Home
, и на основе результата вы можете сгруппировать текст и создать GroupId
.
Таким образом, вы можете применить COALESCE(Mobile, Home)
и DENSE_RANK() OVER (ORDER BY
.
Пожалуйста, найдите демо с примерами данных:
DECLARE @TestTable TABLE (Id INT, Mobile INT, Home INT);
INSERT INTO @TestTable (Id, Mobile, Home) VALUES
(1, NULL, 626456),
(2, 626456, NULL),
(3, 405123, NULL),
(4, NULL, 405123);
SELECT DENSE_RANK() OVER(ORDER BY COALESCE(Mobile, Home)) AS GroupId,
Id
FROM @TestTable
ORDER BY Id
Здесь я использовал ORDER BY
на основеCOALESCE
результат, вы можете изменить его в соответствии с вашими потребностями бизнеса.
Демонстрация на дб <> скрипка