#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)
Я подозреваю, что последнее — это то, чего вы действительно хотите.