SQL Server row_number () Разделение по запросу

У меня есть мои данные в формате ниже и попытка получить уникальный clientIDCount с использованием и accountCategoryount с помощью row_number () и раздела, но с проблемой с нижестоящим запросом, может ли кто-нибудь помочь?

with cte as ( select *, accountCategoryCount = row_number() over (partition by phoneNUmber, ID, accountCategory Order by phoneNumber) from (select distinct * from myTable) base ), cet2 as ( select *, customerIDCount = row_number() over (partition by phoneNumber, ID order by phoneNumber from cte A ) select * from cte2 

Данные MyTable:

 phoneNumber ID name dob accountCategory accountNumber balance 123456789 456 sam 10061970 checking 4567 10 123456789 456 sam 10061970 checking 4568 200 123456789 456 sam 10061970 Savings 4569 12 123456789 456 sam 10061970 Savings 4570 13 123456789 789 John 10101970 CreditCard 4571 400 123456789 789 John 10101970 CreditCard 4572 600 123456789 789 John 10101970 Savings 4573 50 

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

 phoneNumber ID name dob accountCategory accountNumber balance accountCategoryCount customerIDCount 123456789 456 sam 10061970 checking 4567 10 1 1 123456789 456 sam 10061970 checking 4568 200 2 1 123456789 456 sam 10061970 Savings 4569 12 1 1 123456789 456 sam 10061970 Savings 4570 13 2 1 123456789 789 John 10101970 CreditCard 4571 400 1 2 123456789 789 John 10101970 CreditCard 4572 600 2 2 123456789 789 John 10101970 Savings 4573 50 1 2 

Проблема в том, что ROW_NUMBER() всегда возвращает разные номера, и вы хотите получить одинаковый номер для тех же значений «номер телефона» и «идентификатор», для этого вам нужно использовать DENSE_RANK() который возвращает то же значение для связей:

 with cte as ( select *, row_number() over (partition by phoneNumber, ID, accountCategory Order by phoneNumber) as accountCategoryCount, dense_rank() over (order by phoneNumber, ID) as customerIDCount from (select distinct * from myTable) base ) select * from cte 

Результаты:

 | phoneNumber | ID | accountCategory | ... | accountCategoryCount | customerIDCount | |-------------|-----|-----------------|-----|----------------------|-----------------| | 123456789 | 456 | checking | | 1 | 1 | | 123456789 | 456 | checking | | 2 | 1 | | 123456789 | 456 | Savings | | 1 | 1 | | 123456789 | 456 | Savings | | 2 | 1 | | 123456789 | 789 | CreditCard | | 1 | 2 | | 123456789 | 789 | CreditCard | | 2 | 2 | | 123456789 | 789 | Savings | | 1 | 2 | 
  • Поиск максимального значения до изменения между n категориями в окне для m> n изменений между категориями
  • ORDER BY в разделе - ключевое слово SELECT
  • Сравнение производительности SQL Server между большим количеством разделов и группой
  • Эквивалент PostgreSQL для TOP n WITH TIES: LIMIT «со связями»?
  • Проблемы с использованием ОДНОГО РАЗРЕШЕНИЯ
  • ROW_NUMBER по столбцу
  • Запрос объединения Tsql
  • Функции окна вложенности в SQL Server
  • Interesting Posts

    SQL – OVER и ORDERBY

    Как изменить все столбцы без указания имени_ column_name?

    sp_send_dbmail: FROM_ADDRESS

    Полностью текстовый поиск sql server – поиск примера использования тезауруса в полнотекстовом поиске

    Запрос T-SQL для возврата результатов в одну таблицу

    Как обновить несколько строк в sql с разными значениями в соответствии с несколькими параметрами

    sqlmetal не может извлечь udf с полнотекстовым

    В чем смысл вывода кода языка определения данных (TSQL) из модели

    Лучший способ реализовать последний модифицированный столбец в Sql Server 2005?

    Вставка нескольких записей в базу данных SQL Server с использованием цикла

    значение даты по умолчанию каждую пятницу в SQL Server?

    Как развернуть приложение с базами данных SQL Server на клиентах

    Создание запроса на вставку (ошибка ограничения внешнего ключа)

    Обновить запрос в связанной таблице MySQL из SQL Server

    Как я могу форматировать datetime в varchar с помощью формата dd-MMM-yyyy?

    Давайте будем гением компьютера.