CTE ведет себя неожиданно, когда используется агрегатная функция - PullRequest
0 голосов
/ 22 ноября 2018

Когда я использую статистическую функцию внутри CTE, я получаю сообщение об ошибке.Ниже приведен запрос и сообщение об ошибке, связанное с ним.Это работает нормально, когда я удаляю агрегатную функцию.Где-то мне не хватает трюка.

Код:

;
With CTE as (
    Select
        sn,
        ed,
        sum(c) c,
        row_number() over (partition by sn, ed order by sn, sum(c) desc, ed) rn
    from TD
    where ed >= '11/15/2018'
)
select * from CTE

Сообщение об ошибке:

СтолбецTD.sn недопустимо в списке выбора, поскольку оно не содержится ни в статистической функции, ни в предложении group by.

1 Ответ

0 голосов
/ 22 ноября 2018

Вы использовали агрегатную функцию, но не использовали group by в своем запросе

With CTE as (
    Select
        sn,
        ed,
        sum(c) c,
        row_number() over (partition by sn order by  sum(c) desc) rn
    from TD
    where ed >= '11/15/2018'
   group by sn,
        ed
)
select * from CTE where rn<=3
...