Как получить количество строк на основе других групп столбцов

#sql #sql-server #group-by #rowcount

#sql #sql-сервер #группировка по #количество строк

Вопрос:

Мне нужно подсчитать количество дат, с которыми выставляются счета определенным клиентам в каждом месяце

Рассмотрим таблицу с именем Table1

 Branch  Month  Date     Amount
----------------------------------------
 B1     April  01/04/20  10000
 B1     April  14/04/20  13000
 B1     May    01/05/20  25000
 B1     May    14/05/20  23000
  

Я попробовал следующий код

 Select 
    Branch, Month, Date, Amount,
    Row_Number() over (partition by Branch order by Month) as rowcount 
from table1
  

и результат был

 Branch  Month  Date      Amount   rowcount
----------------------------------------
 B1     April  01/04/20  10000      1
 B1     April  14/04/20  13000      2
 B1     May    01/05/20  25000      3
 B1     May    14/05/20  23000      4
  

Нужный мне результат должен подсчитывать столбец с именем branch на основе столбца month, желаемый результат

 Branch  Month  Date      Amount   rowcount
---------------------------------------------
 B1     April  01/04/20  10000     1
 B1     April  14/04/20  13000     2
 B1     May    01/05/20  25000     1
 B1     May    14/05/20  23000     2
  

Здесь количество строк основано как на ветви столбца, так и на месяце, как я могу получить этот результат?

Ответ №1:

Вам нужно разделить по month . Что-то вроде этого:

 row_number() over (partition by Branch, month order by Month)
  

Обратите внимание, что month это повторяется. В order by SQL Server требуется An, поэтому вам что-то нужно. Другие варианты:

 row_number() over (partition by Branch, month order by (select null))
row_number() over (partition by Branch, month order by date)
  

Я подозреваю, что последнее — это то, чего вы действительно хотите.