我有一个查询DATA
,从一些UNION ALL
连接的查询返回一组结果作为一个表调用.
我正在做ROW_NUMBER()
这个,以获取特定分组的行号(WorksOrderNo)
ROW_NUMBER() Over(partition by Data.WorksOrderNo order by Data.WorksOrderNo) as RowNo,
是否存在ROW_Count
可以指定分区的等效函数,并返回该分区的行数?
ROW_Count() Over(partition by Data.WorksOrderNo order by Data.WorksOrderNo) as RowNo ???
原因是,这是用于驱动报表布局的查询.作为其中的一部分,我需要根据每个WorksOrderNo的总行数是否大于1进行格式化.
因此,例如,如果工作订单有三行,则该row_number
函数当前返回1,2和3,其中行计数将在每行返回3.
功能很简单COUNT()
.在SQL Server中,所有聚合函数都可以用作窗口函数,只要它们不使用即可DISTINCT
.
请注意,对于总计数,您不希望ORDER BY
:
COUNT(*) Over (partition by Data.WorksOrderNo) as cnt
如果包含ORDER BY
,COUNT()
则为累积,而不是分区中所有行的常量.