Как получить МАКСИМАЛЬНОЕ КОЛИЧЕСТВО с rowNumber в том же запросе - PullRequest
0 голосов
/ 17 октября 2019

У меня есть 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...

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

Я думаю, вы хотите 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
1 голос
/ 17 октября 2019

Исходя из моих предположений в вашем наборе данных, я бы выбрал такой подход:

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;
...