SQL Row_Count 分区功能

SQL Row_Count function with Partition

我有一个查询 return 是一组名为 DATA 的 table 结果,来自几个 UNION ALL 联合查询。

然后我正在对此进行 ROW_NUMBER(),以获取特定分组的行号 (WorksOrderNo)

ROW_NUMBER() Over(partition by Data.WorksOrderNo order by Data.WorksOrderNo) as RowNo,

是否有等效的 ROW_Count 函数,我可以在其中指定一个分区,以及 return 该分区的行数?

ROW_Count() Over(partition by Data.WorksOrderNo order by Data.WorksOrderNo) as RowNo ???

原因是,这是用于驱动报表布局的查询。 作为其中的一部分,我需要根据每个 WorksOrderNo 的总行数是否 >1 进行格式化。

因此,例如,如果工作订单有三行,则 row_number 函数当前 returns 1、2 和 3,其中行数将 return 3每行。

看来您只需要 group bycount:

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

功能简单COUNT()。在SQL服务器中,所有聚合函数都可以作为window函数使用,只要不使用DISTINCT.

请注意,对于总计数,您不需要 ORDER BY:

COUNT(*) Over (partition by Data.WorksOrderNo) as cnt

如果包含 ORDER BY,则 COUNT() 是累积的,而不是分区中所有行的常量。