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 by
和 count
:
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()
是累积的,而不是分区中所有行的常量。
我有一个查询 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 by
和 count
:
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()
是累积的,而不是分区中所有行的常量。