介绍关于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 列的其他表插入记录,系统 ...
随机推荐
- 6月7日 python 复习 collections
collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtuple 我们知道tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: >>> ...
- 使用digispark制作一个BadUSB
0X00.工具准备 digispark开发板. 淘宝连接:https://m.tb.cn/h.VK7vwjy?sm=d85844 0X01.安装Arduino IDE环境 1.安装 arduino 的 ...
- 数据结构 - 单链表 C++ 实现
单链表 单链表的定义 typedef int ElemType; typedef struct LNode { ElemType data; LNode *next; } LNode, *LinkLi ...
- Spring---Spring专题(二)
1.Spring配置数据源 1.1 数据源(连接池)的作用 数据源(连接池)是提高程序性能而出现的 事先实例化数据源,初始化部分链接资源 使用连接资源时从数据源中获取 使用完毕后将连接资源归还给数据源 ...
- LCS&&LRC&&LIS问题
注:最近笔试题经常碰到DP动态规划的问题,但是由于本人没有接触过DP,笔试后看到别人家的答案简洁又漂亮,真的羡慕:难的DP自己可能不会,那再见到常见的LCS和LRS以及LIS为问题总该会吧: 资料参考 ...
- XML文档约束有哪几种?有什么区别?
XML DTD(功能有限) XML Schema (功能强大) Schema本身是XML的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),Schema支持命名空间,Schema ...
- 转载:TCP协议如何保证可靠传输
转载至:https://www.cnblogs.com/xiaokang01/p/10033267.html TCP协议如何保证可靠传输 概述: TCP协议保证数据传输可靠性的方式主要有: (校 序 ...
- 在java web工程中jsp页面中使用kindeditor
在这之前我们用Notepad++写过kindeditor 在Java web工程里也差不多 首先我们复制之前的thml代码粘贴到工程里 然后把样式也复制进去 然后就可以运行了
- mybatis源码之我见
以前一直想看mybatis的源代码,但是一直没找到入口(傻),最近看教程,有些感悟. 和起以前一样,关键代码我会用红色标记. 首先,先贴下我的dao和mapper,代码很简单,和平时写的hello w ...
- centos下安装配置maven
下载maven安装包 wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven ...