繁体   English   中英

带分区的SQL Row_Count函数

[英]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 bycount

select WorksOrderNo, count(*) as Row_Count
from Data 
group by WorksOrderNo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM