代码之家  ›  专栏  ›  技术社区  ›  Madhukar

使用聚合函数时,CTE的行为异常

  •  1
  • Madhukar  · 技术社区  · 6 年前

    代码:

    ;
    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 回复  |  直到 6 年前
        1
  •  2
  •   Zaynul Abadin Tuhin    6 年前

    您在查询中使用了聚合函数,但未使用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