select sum(fzqsz-flx) over (partition by gz.fzqdm) as zqsz from rp_gzbondsdetail gztable rp_gzbondsdetail fzqsz numeric(18, 4),
flx numeric(18, 4),
fzqdm varchar(50)这条语句在Oracle只运行正常,在sqlserver 05 中报 在关键字 'over' 附近有语法错误。这个错误,请问在sqlserver中改如何改呢!望知道的能否帮忙解决一下,小弟在此感谢
解决方案 »
- 有趣的问题,高手进。100分。
- 如何将查询结果分组编号
- Select的简单问题!在线等待!解决马上结帖
- 菜鸟题,在线等待解决....各位指点指点啊!!!
- MM初学SQL,希望哪位大侠指点一下下面的语句,越详细越好,在线等!谢谢!
- 关于分组查询和小计的问题
- 数据统计的问题
- 关于更改sqlserver默认字符集的问题
- SQL起不来了,快来看看这个信息怎么了?
- 我的数据表中有一个text字段,开始的时候我存入了一些字符,后来我想改变这些内容,却显示"无法编辑改单元"?谢!
- Syntax error converting datetime from character string
- sql语句要怎么写?好难呢。
(
id int,
num1 int,
num2 int
)insert into tb
select 1,2,3 union all
select 1,2,3 union all
select 1,2,3 union all
select 1,2,3 union all
select 1,2,3 select id,SUM(num1-num2)over(partition by id) as zqsz from tb/*
id zqsz
1 -5
1 -5
1 -5
1 -5
1 -5
*/
--定义表变量
DECLARE @rp_gzbondsdetail TABLE
(
fzqsz NUMERIC(18, 4) ,
flx NUMERIC(18, 4) ,
fzqdm VARCHAR(50)
)
--插入数据
INSERT INTO @rp_gzbondsdetail
SELECT 2.33,1.33,'a' UNION ALL
SELECT 4.55,1.55,'b' UNION ALL
SELECT 6.55,1.2,'c'--查询
SELECT SUM(fzqsz - flx) OVER ( PARTITION BY gz.fzqdm ) AS zqsz
FROM @rp_gzbondsdetail gz
--没有特殊修改,可以运行(只是表,变成表变量了)/*
zqsz
---------------------------------------
1.0000
3.0000
5.3500
*/
select sum(fzqsz)-sum(flx) as zqsz
from rp_gzbondsdetail
group by fzqdm
from rp_gzbondsdetail gz
group by fzqdm
这里的over partition by 其实就是按fzqdm分组!
可使用group by
select sum(fzqsz-flx) from rp_gzbondsdetail gz
group by fzqdm
if object_id('rp_gzbondsdetail') is not null
drop table rp_gzbondsdetail
gocreate TABLE rp_gzbondsdetail
(
fzqsz NUMERIC(18, 4) ,
flx NUMERIC(18, 4) ,
fzqdm VARCHAR(50)
)
INSERT INTO rp_gzbondsdetail
SELECT 2.33,1.33,'a' UNION ALL
SELECT 4.55,1.55,'b' UNION ALL
SELECT 6.55,1.2,'c'select sum(fzqsz-flx) zqsz from rp_gzbondsdetail gz
group by fzqdmzqsz
----------------------------------------
1.0000
3.0000
5.3500(所影响的行数为 3 行)