sql - 使用聚合函数时 CTE 行为异常
问题描述
当我在 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 子句中。
解决方案
您在查询中使用了聚合函数但未使用 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
推荐阅读
- python - 如何比较熊猫大数据框(python3.x)中的两个字符串?
- css - 在动画运行时禁用过渡
- xamarin - 为什么 Xamarin 绝对布局堆叠不尊重儿童顺序
- r - 将向量中多个值的每个实例替换为特定于唯一值的值
- amazon-web-services - AWS API Gateway HTTP 请求拦截器
- widget - 十月CMS | 有没有办法使用 Builder 中的文件上传小部件来使用富文本编辑器?
- dart - Dart:获取给定语言环境的货币代码
- xml - 隐藏每个组的编辑和删除按钮 Odoo 12
- javascript - 如何在表中生成不同数量的行和列
- python - AttributeError:“RegexpReplacer”对象没有属性“replace”