楼主: 513071394@qqcom
6658 13

[应用实例] 求SQL Server 语句,以相同日期为一组,求相邻两行价格之差。 [推广有奖]

11
513071394@qqcom 发表于 2014-6-11 14:22:22 |只看作者 |坛友微信交流群
kadilase571 发表于 2014-6-6 10:22
select ROW_NUMBER() over(order by dates,number) id,dates,number,price,convert(decimal(18,2),0.00)  ...
方法是对的,已经运行出来了。谢谢大神。但是目前只能运行分组后每组9行以内的数据。想请教'   ' as new_number 的时候,new_number默认是1位的吗?

按照大神的方法,如果每组数据超过了10行,我修改了这两个地方,也运算出来了。
在开头的select的时候修改'   ' as new_number ,改成convert(varchar(值),1)  as new_number;
在中间修改new_number=convert(varchar(值),number)+'-'+convert(varchar(值),number-1)




使用道具

12
513071394@qqcom 发表于 2014-6-11 14:27:52 |只看作者 |坛友微信交流群
samwingz 发表于 2014-6-7 16:59
1/先建临时表分组排序
create tmp1 as
select    dates  ,  number ,price ,  ROW_NUMBER() OVER (PARTIT ...
谢谢你啊,但是运行不出来。错误是nvl无效。

使用道具

13
513071394@qqcom 发表于 2014-6-11 14:28:53 |只看作者 |坛友微信交流群
samwingz 发表于 2014-6-7 17:02
然后 dif 判断 正数 就为 1 ,负数为 1,这样性能应该挺快
多谢大神啊,本人是数据库小白。需要详细的步骤才会实现啊。

使用道具

14
escaflowne1985 在职认证  发表于 2017-12-21 08:52:45 |只看作者 |坛友微信交流群
先row number分区,然后交叉查询 基本是这个思路

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 15:53