介绍关于MSSQL当前行中获取到上一行某列值的函数 Coalesce
记录一个小知识点,在SQLGrid中,在当前行显示上一行某列值的函数** Coalesce **的使用。
显示上一行是有啥子用?
经常有人百度SQL上一行减下一行的写法,但是没几个文章是用最简单直接的方法来使用的,一堆union、零时表啊啥子的,SQL有很好使的自带函数来搞定这个,来看看吧!
比如你有下面的一串数据
| 时间(CollectTime) | 读数(Value) |
|---|---|
| 2022-04-14 22:05:07.000 | 259 |
| 2022-04-13 22:05:07.000 | 258 |
| 2022-04-12 22:05:07.000 | 257 |
| 2022-04-11 22:05:07.000 | 256 |
| 2022-04-10 22:05:07.000 | 255 |
| 2022-04-09 22:05:07.000 | 254 |
此时的SQL可能是这样的
SELECT CollectTime,Value FROM DinData
现在你有一个分析场景,需要计算每次读数的间隔值,这个时候你要是能形成下面的Grid数据,那计算这个值就是个减法了。
| 时间(CollectTime) | 读数(Value) | 上次读数(LastValue) |
|---|---|---|
| 2022-04-14 22:05:07.000 | 259 | 258 |
| 2022-04-13 22:05:07.000 | 258 | 257 |
| 2022-04-12 22:05:07.000 | 257 | 256 |
| 2022-04-11 22:05:07.000 | 256 | 255 |
| 2022-04-10 22:05:07.000 | 255 | 254 |
| 2022-04-09 22:05:07.000 | 254 | 253 |
Coalesce 函数就可以干这个事!
下面的这个SQL怎么写呢?
Coalesce 格式是这样的
Coalesce(lag(Value) over(ORDER BY,CollectTime),Value)
总结就是:做下排序,定下上下行怎么取的顺序,设置下要展示的是上下行中的那个字段
最后的SQL:
SELECT CollectTime,Value,Coalesce(lag(Value) over(ORDER BY,CollectTime),Value) AS LastValue FROM DinData
此时就可以计算 差值啊之类的了
| 时间(CollectTime) | 读数(Value) | 上次读数(LastValue) | 差值(DinValue) |
|---|---|---|---|
| 2022-04-14 22:05:07.000 | 259 | 258 | 1 |
| 2022-04-13 22:05:07.000 | 258 | 257 | 1 |
| 2022-04-12 22:05:07.000 | 257 | 256 | 1 |
| 2022-04-11 22:05:07.000 | 256 | 255 | 1 |
| 2022-04-10 22:05:07.000 | 255 | 254 | 1 |
| 2022-04-09 22:05:07.000 | 254 | 253 | 1 |
介绍关于MSSQL当前行中获取到上一行某列值的函数 Coalesce的更多相关文章
- Web版需求征集系统所得1,servlet中获取checkbox复选框的值
servlet中获取checkbox复选框的值 </tr> <tr> <td align="right">研究类型</td> < ...
- Android中获取系统上安装的APP信息
Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00003259 Android中获取系统上安装的APP信 ...
- 【Android】12.3 在当前Activity中获取另一个Activity的返回值
分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 在上一节的示例中,通过StartActivity(Intent)方法启动另一个Activity后,这两个Activ ...
- python中获取当前位置所在的行号和函数名(转)
http://www.vimer.cn/2010/12/%E5%9C%A8python%E4%B8%AD%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E4%BD%8D%E7 ...
- jQuery常用方法一览及JQuery选择器获取表格中按钮所在行的其他列值
Attribute: $(”p”).addClass(css中定义的样式类型); 给某个元素添加样式$(”img”).attr({src:”test.jpg”,alt:”test Image”}); ...
- 微信小程序在组件中获取界面上的节点信息wx.createSelectorQuery
节点信息查询 API 可以用于获取节点属性.样式.在界面上的位置等信息. 最常见的用法是使用这个接口来查询某个节点的当前位置,以及界面的滚动位置. 示例代码: const query = wx.cre ...
- python中获取当前位置所在的行号和函数名(转)
http://www.vimer.cn/2010/12/%E5%9C%A8python%E4%B8%AD%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E4%BD%8D%E7 ...
- sql 循环处理表数据中当前行和上一行中某值相+/-
曾经,sql中循环处理当前行数据和上一行数据浪费了我不少时间,学会后才发现如此容易,其实学问就是如此,难者不会,会者不难. 以下事例,使用游标循环表#temptable中数据,然后让当前行和上一行中的 ...
- 如何在mssql中获取最新自增ID的值
@@IDENTITY 返回最后一个插入 IDENTITY 的值,这些操作包括:INSERT, SELECT INTO,或者 bulk copy.如果在给没有 IDENTITY 列的其他表插入记录,系统 ...
随机推荐
- linux 下载源
Cenos7 Nginx [nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/centos/$releaseve ...
- Netty之DefaultAttributeMap与AttributeKey的机制和原理
一.介绍和原理分析 1.什么是 DefaultAttributeMap? DefaultAttributeMap 是一个 数组 + 链表 结构的线程安全Map. 2.什么是 AttributeKey? ...
- BUAA_DS_北航数据结构:输出全排列
输入一个数 \(n\),输出 \(1\sim n\) 的所有全排列,每个排列占一行,每个字符保留 \(5\) 个场宽.勤奋的同学一定已经开始打表了是吧. 说是能做肯定不是骗大家,那怎么做呢~ 其实回溯 ...
- 22.1.7 master公式及O(NLogN)的排序
22.1.7 master公式及O(NLogN)的排序 1 master 公式 (1) 写公式 T(N) = a * T(N/b) + O(N^d); master公式用来求递归行为的时间复杂度,式中 ...
- Mysql查询优化器之关于JOIN的优化
连接查询应该是比较常用的查询方式,连接查询大致分为:内连接.外连接(左连接和右连接).自然连接 下图展示了 LEFT JOIN.RIGHT JOIN.INNER JOIN.OUTER JOIN 相关的 ...
- kafka producer如何优化打入速度?
增加线程 提高 batch.size 增加更多 producer 实例 增加 partition 数 设置 acks=-1 时,如果延迟增大:可以增大 num.replica.fetchers(fol ...
- 什么是Hystrix断路器?我们需要它吗?
由于某些原因,employee-consumer公开服务会引发异常.情况下使用Hystrix我们定义了回退方法.如果在公开服务中发生异常,则回退方法返回一些默认值 . 如果firstPage metho ...
- 并发包中automic类的原理
提到同步,我们一般首先想到的是lock,synchronized,但java中有一套更加轻量级的同步方式即atomic类.java的并发原子包里面提供了很多可以进行原子操作的类,比如: AtomicI ...
- Zookeeper 文件系统 ?
Zookeeper 提供一个多层级的节点命名空间(节点称为 znode).与文件系统不 同的是,这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放 数据而目录节点不行. Zookeeper ...
- 前端进阶(12) - css 的弱化与 js 的强化
css 的弱化与 js 的强化 web 的三要素 html, css, js 在前端组件化的过程中,比如 react.vue 等组件化框架的运用,使 html 的弱化与 js 的强化 成为了一种趋势, ...