如何解决SQL Server:函数“ abs”不是有效的窗口函数,不能与OVER子句一起使用
我在下面显示的SQL Server代码的第10行出现错误
函数“ abs”不是有效的窗口函数,不能与OVER子句一起使用
我想做的是获取MTM_DIFF_GBP
列中每个值的绝对值,并获取每个交易对手(cp)的总和。
select A.*,dense_rank () over (order by A.ABS_MTM_DIFF_GBP desc)
from
(
select T.MTM_DATE,case
when T.TraderFullName is null then T.Department_Head
else T.TraderFullName
end as TraderFullName,T.CP,T.BOOK,T.PRODUCT_CLASS_ORIG,T.MTM_CURR,T.MTM_DIFF,T.MTM_DIFF_GBP,sum(abs(T.MTM_DIFF_GBP) over (partition by T.CP)) as ABS_MTM_DIFF_GBP
from
(
select c.MTM_DATE,c.MTMCOBID,b.CurrentPrimaryTraderCode,p.TraderFullName,l.Department_Head,c.LatestBookKey,c.CP,c.BOOK,c.PRODUCT_CLASS_ORIG,c.MTM_CURR,ex.ExchangeRate,round(sum(MTM_VALUE_DIFF),2) as MTM_DIFF,round(ex.ExchangeRate * sum(MTM_VALUE_DIFF),2) as MTM_DIFF_GBP
from ops.ClientValuationDiffs c
left join Global.Book b
on c.LatestBookKey = b.BookKey
left join Global.TraderPhysical p
on b.CurrentPrimaryTraderCode = p.TraderCode and b.EntityCode = p.EntityCode
left join Global.LocalDepartmentRoles l
on b.EntityCode = l.Entity and b.DepartmentCode = l.Department
inner join Global.ExchangeRate ex
on c.COBID = ex.COBId and ex.FromCurrencyCode = c.MTM_CURR
where c.MTMCOBID = '20200727'
and c.CP NOT IN ('BTMU','MUMSS','DEUTSCHE-TELEKOM','DEXIACLSA','EKS','HSHNORD','IBRD','INGBANK','KBN','NATIONALGRIDGAS','NORDLB')
and c.AGREEMENT_TYPE IN ('CCP','ISDA')
and c.CP != 'MUSI'
and c.PRODUCT_CLASS_ORIG !='COMS'
and ex.ToCurrencyCode = 'GBP'
and ex.RegionDataSetKey = '1'
group by c.MTM_DATE,ex.ExchangeRate
) T
) A
解决方法
您的括号在错误的位置。您希望将x
作为abs()
的参数:
sum()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。