sql-server – 在OVER的窗口函数中使用DISTINCT
发布时间:2021-03-10 05:45:22 所属栏目:MsSql教程 来源:网络整理
导读:我正在尝试将查询从Oracle迁移到SQL Server 2014. 这是我在Oracle中运行良好的查询: selectcount(distinct A) over (partition by B) / count(*) over() as A_Bfrom MyTable 这是我尝试在SQL Server 2014中运行此查询后得到的错误. Use of DISTINCT is no
我正在尝试将查询从Oracle迁移到SQL Server 2014. 这是我在Oracle中运行良好的查询: select count(distinct A) over (partition by B) / count(*) over() as A_B from MyTable 这是我尝试在SQL Server 2014中运行此查询后得到的错误. Use of DISTINCT is not allowed with the OVER clause 谁知道问题是什么?在SQL Server中可以进行哪种查询吗? 解决方法
不,目前尚未实施.请参阅以下连接项请求. OVER clause enhancement request – DISTINCT clause for aggregate functions 另一种可能的变体是 SELECT M.A,M.B,T.A_B FROM MyTable M JOIN (SELECT CAST(COUNT(DISTINCT A) AS NUMERIC(18,8)) / SUM(COUNT(*)) OVER() AS A_B,B FROM MyTable GROUP BY B) T ON EXISTS (SELECT M.B INTERSECT SELECT T.B) 对NUMERIC的强制转换是为了避免整数除法. join子句的原因是explained here. 如果优选,它可以用ON M.B = T.B OR(M.B IS NULL和T.B IS NULL)代替(或者如果B列不可为空则简单地ON ON M.B = T.B). (编辑:泉州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql server2005 jdbc解决自动增长列统一处理问题纪实
- 美国在线屏蔽微软Messenger Service 的服务
- 数据库设计 – 在具有缩写表名的表中为每个字段名添加前缀是
- sql-server-2005 – 在SQL Server 2005中使用PDF文件进行全
- sql-server – SQL Server存储过程避免游标
- 虚拟主机接通手机无线管理成就E化之路
- 21世纪经济报道:微软关闭MSN传言的背后
- 在SQL Server中将数据类型Varchar更改为Varbinary(max)
- 微软十月份针对大中企业推Office System
- 利用配置文件实现SQL Server与Oralce访问类的转换
站长推荐
热点阅读