sql语句示例:

DECLARE @pts varchar(max)='[{"x":5.801718000000000e+002,"y":3.633722000000000e+002,"z":-3.739560000000000e+002,"seq":9},{"x":5.822890000000000e+002,"y":3.669996000000000e+002,"z":-3.739560000000000e+002,"seq":8},{"x":6.849424000000000e+002,"y":5.428771000000000e+002,"z":-3.722434000000000e+002,"seq":7},{"x":6.879668000000000e+002,"y":5.480589000000000e+002,"z":-3.721940000000000e+002,"seq":6},{"x":6.910163000000000e+002,"y":5.532253000000000e+002,"z":-3.721003000000000e+002,"seq":5},{"x":7.614744000000000e+002,"y":6.725928000000000e+002,"z":-3.699347000000000e+002,"seq":4},{"x":7.645240000000000e+002,"y":6.777592000000000e+002,"z":-3.698410000000000e+002,"seq":3},{"x":7.675464000000000e+002,"y":6.829361000000000e+002,"z":-3.695856000000000e+002,"seq":2},{"x":8.171899000000000e+002,"y":7.679665000000000e+002,"z":-3.651350000000000e+002,"seq":1},{"x":8.202150000000000e+002,"y":7.731480000000000e+002,"z":-3.651350000000000e+002,"seq":0}]';--结束点项
with t1 as (
select convert(float,x) x,convert(float,y) y,convert(float,z) z,convert(int,seq) seq from (select JSON_VALUE(value,'$.x') as x,JSON_VALUE(value,'$.y') as y,JSON_VALUE(value,'$.z') as z,JSON_VALUE(value,'$.seq') as seq from openjson(@pts)) as m
),
t2 as (
select distance,seq,x1,y1,z1,x2,y2,z2
from
(
select a.seq,a.x x1,a.y y1,a.z z1,b.x x2,b.y y2,b.z z2,
SQRT(SQUARE(b.x-a.x)+SQUARE(b.y-a.y)+SQUARE(b.z-a.z)) distance--返回前后两点的距离
from t1 a
left join t1 b on a.seq=b.seq-1
) A
where distance is not null--排除最后一个点
),
t3 as (
select a.distance,a.seq,a.x1,a.y1,a.z1,a.x2,a.y2,a.z2,SUM(b.distance) as accumulation
from t2 a inner join t2 b ON 1 = 1
where A.seq <= B.seq
group by a.distance,a.seq,a.x1,a.y1,a.z1,a.x2,a.y2,a.z2
--order by a.seq desc
)
select * from t3 order by seq desc

  查询结果:

最新文章

  1. 【转】PowerShell入门(十):使用配置文件
  2. Android提交数据到JavaWeb服务器实现登录
  3. $state.go页面不刷新数据
  4. 搭建spring+mybatis+struts2环境的配置文件
  5. IOS ScrollowView 滑动到边缘后不允许再拖动
  6. CentOS虚拟机不能联网状况下yum方式从本地安装软件包(转载的)
  7. new Date()的参数
  8. VMI
  9. 利用hibernate实现oracle(每张表的ID)自动增长
  10. redisLock redis分布式锁
  11. CVPixelBuffer的创建 数据填充 以及数据读取
  12. windows类似grep的命令——findstr
  13. 关于npm镜像,发布,内网搭建等
  14. 罗汉果与Java虚拟机系列目录与说明
  15. JSP错误页面处理的两种方式
  16. python 使用多进程实现并发编程/使用queue进行进程间数据交换
  17. HTTP 总结
  18. c++ 启动exe(启动别的exe程序)
  19. NodeJs中npm使用
  20. Connect模块解析 转载

热门文章

  1. python之路29 网络编程基础2之 两种架构 传输层常见协议 socket模块
  2. python进阶之路5之流程控制(垃圾回收机制)
  3. 01-Tcl基本知识
  4. 手把手教你图文并茂windows10安装VMware创建CentOS-7-x86_64运行linux系统
  5. C#零基础小白快速入门
  6. sync.Once 使用及解析
  7. 如何避免让线程摸鱼,请用异步技术 async await 拿捏他~
  8. JAVA虚拟机07-垃圾回收-分代收集理论和垃圾收集算法
  9. find_package()的使用
  10. 删除resource中的图片后编译报错