[英]SQL Row_Count function with Partition
我有一个查询,它从几个UNION ALL
连接的查询中以表DATA
返回一组结果。
然后,我对此进行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()
是累积的,而不是分区中所有行的常数。
看来您只需要按group by
并count
:
select WorksOrderNo, count(*) as Row_Count
from Data
group by WorksOrderNo
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.