簡體   English   中英

如何在同一查詢中使用 rowNumber 獲取 MAX rownumber

[英]How to get MAX rownumber with rowNumber in same query

我在 sql 語句中有ROW_NUMBER() OVER (ORDER BY NULL) rnum來給我行號。 有沒有辦法將最大 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...

我想你想要count(*)作為 window function:

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

根據我在您的數據集中的假設,這是我將采取的方法:

WITH CTE AS (
select C.ID, C.FIELD1, C."NAME", C.FIELD2, C.FIELD3, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID)
FROM SCHEMA.TABLE WHERE (C.IS_CRNT = 1))
SELECT *, (select count(*) from cte) "count" from cte;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM