sql server 2008使用over(PARTITION BY..ORDER BY.. ) 显示有语法错误

img


sql是求每月一项字段的累加,按照日期与月份分组的,请指点,谢谢

img


这是在另一个数据库运行的,语法没有错误,但在sql server 2008R2 就报错了,请指点

sql server 2005引入Row_number()
over(PARTITION BY..ORDER BY.. ) 不能用Sum
用sum要Group By
我只修正over(PARTITION BY..ORDER BY.. )
不清楚你要查什么,所以没有修正其它语法错误,比如没有Group by

select * from (
select t.jh, mth, sum (ryou_ sum)  as ryou_suml,Row_number() over (PARTITION BY jh ORDER BY mth ) num from
(select jh, month (rq) mth, sum (ryou) ryou_ sum from CSJING_ SCSJB
where rq >='2022-01-01' and rq<='2022-12-31' group by month(rq),jh) t) tt
pivot 
(max (ryou_ sum1 )
for mth in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])) as x

sqlserver 2008R2 partition不支持聚合聚合函数,row_number(),rank()支持,聚合函数要升级到2012以上的sqlserver

2008的 sum() 开窗函数 还不支持 order by,后面的版本才行
要累计求和的话,用子查询

感觉是sql server 不同版本对语法不支持或有差别的问题,sql中的关键字一般会使用不同颜色标出的,但是sql server 2008R2对应的sql中PARTITION BY只有by被标出,PARTITION 没有标出,另一个库中则完全标出,
而pivot函数是关键字函数,但是2008版本没有标出。你可以把大小写完全统一试试

升级数据库版本最好,2008都是多少年前的产品了。。很多新功能新特性都不支持