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