问题描述
我需要计算每个月向某些客户开具发票的日期
考虑名为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的列进行计数,期望的结果是
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
这里的行数基于列分支和月份,我如何获得此结果?
解决方法
您需要按month
进行分区。像这样:
row_number() over (partition by Branch,month order by Month)
请注意,重复month
。 SQL Server中需要一个order by
,所以您需要某物。其他选项是:
row_number() over (partition by Branch,month order by (select null))
row_number() over (partition by Branch,month order by date)
我怀疑最后一个是您真正想要的。