我有一个查询,它会从几个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。
答案 0 :(得分:5)
该功能只是DISTINCT
。在SQL Server中,所有聚合函数都可以用作窗口函数,只要它们不使用ORDER BY
。
请注意,对于总计数,您不需要COUNT(*) Over (partition by Data.WorksOrderNo) as cnt
:
ORDER BY
如果您包含COUNT()
,则numeric
是累积的,而不是分区中所有行的常量。
答案 1 :(得分:1)
看起来您只需要group by
和count
:
select WorksOrderNo, count(*) as Row_Count
from Data
group by WorksOrderNo