首页 > 解决方案 > 如何在同一查询中使用 rowNumber 获取 MAX rownumber

问题描述

我有ROW_NUMBER() OVER (ORDER BY NULL) rnum一个 sql 语句给我行号。有没有办法将最大 rnum 附加到同一个数据集出去?

我想要的是row_number() 我得到的,但我也想要每条记录的总回报的最大行数。

    SELECT 
    ROW_NUMBER() OVER (ORDER BY NULL) rnum,
    C.ID, C.FIELD1, C."NAME", C.FIELD2, C.FIELD3
    FROM SCHEMA.TABLE 
    WHERE (C.IS_CRNT = 1)
), MAX_NUM as (
    SELECT DATA.ID, max(rnum) as maxrnum from DATA GROUP BY DATA.COMPONENT_ID
) select maxrnum, DATA.* from DATA JOIN MAX_NUM on DATA.COMPONENT_ID = MAX_NUM.COMPONENT_ID

期望的结果(假设 15 条记录):

1     15    DATA
2     15    DATA
3     15    DATA
etc...

标签: sqlnetezza

解决方案


我想你想要count(*)一个窗口函数:

SELECT ROW_NUMBER() OVER (ORDER BY NULL) as rnum,
       COUNT(*) OVER () as cnt,
       C.ID, C.FIELD1, C."NAME", C.FIELD2, C.FIELD3
FROM SCHEMA.TABLE 
WHERE C.IS_CRNT = 1

推荐阅读