记录一个小知识点,在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的更多相关文章

  1. Web版需求征集系统所得1,servlet中获取checkbox复选框的值

    servlet中获取checkbox复选框的值 </tr> <tr> <td align="right">研究类型</td> < ...

  2. Android中获取系统上安装的APP信息

    Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00003259 Android中获取系统上安装的APP信 ...

  3. 【Android】12.3 在当前Activity中获取另一个Activity的返回值

    分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 在上一节的示例中,通过StartActivity(Intent)方法启动另一个Activity后,这两个Activ ...

  4. 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 ...

  5. jQuery常用方法一览及JQuery选择器获取表格中按钮所在行的其他列值

    Attribute: $(”p”).addClass(css中定义的样式类型); 给某个元素添加样式$(”img”).attr({src:”test.jpg”,alt:”test Image”}); ...

  6. 微信小程序在组件中获取界面上的节点信息wx.createSelectorQuery

    节点信息查询 API 可以用于获取节点属性.样式.在界面上的位置等信息. 最常见的用法是使用这个接口来查询某个节点的当前位置,以及界面的滚动位置. 示例代码: const query = wx.cre ...

  7. 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 ...

  8. sql 循环处理表数据中当前行和上一行中某值相+/-

    曾经,sql中循环处理当前行数据和上一行数据浪费了我不少时间,学会后才发现如此容易,其实学问就是如此,难者不会,会者不难. 以下事例,使用游标循环表#temptable中数据,然后让当前行和上一行中的 ...

  9. 如何在mssql中获取最新自增ID的值

    @@IDENTITY 返回最后一个插入 IDENTITY 的值,这些操作包括:INSERT, SELECT INTO,或者 bulk copy.如果在给没有 IDENTITY 列的其他表插入记录,系统 ...

随机推荐

  1. python 输入加密的MD5值,并搜索文件中的原始值

    此程序可以输入一串MD5的值,并在指定的文件中搜索到原始值.程序自有用处. #输入加密的MD5值,并搜索文件中的原始值 by qianxiao996 #博客地址:https://blog.csdn.n ...

  2. 题解0005:数的划分(洛谷P1025)

    题目描述:将整数 n 分成 k 份,每份不能为空,颠倒顺序的被看成一种分法. 题目链接:https://www.luogu.com.cn/problem/P1025 题目思路:深搜剪枝,规定搜索的下一 ...

  3. 22.1.22 并查集和KMP算法

    22.1.22 并查集和KMP算法 1.并查集结构 1)实现: 并查集有多种实现方式,例如向上指的图的方式,数组的方式等等.其根本思想就在于准确记录某个节点的根节点,这个这种记录就能够很快的实现并查集 ...

  4. 大咖说|网易数帆论道 PolarDB 数据库开源 & 存储生态

    开源技术如何商业化?将遇到什么问题?有哪些可行的解决办法?本期大咖说,阿里云数据库开源战役负责人曲山将携手网易副总裁汪源与你分享关于开源商业化的思考. 嘉宾简介 网易副总裁.杭州研究院执行院长.网易数 ...

  5. Java如何使用实时流式计算处理?

    我是3y,一年CRUD经验用十年的markdown程序员‍常年被誉为职业八股文选手 最近如果拉过austin项目代码的同学,可能就会发现多了一个austin-stream模块.其实并不会意外,因为这一 ...

  6. C++ bind 和 ref

    #include <functional>#include <iostream> void f(int& n1, int& n2, const int& ...

  7. Java中CAS 基本实现原理 和 AQS 原理

    一.前言了解CAS,首先要清楚JUC,那么什么是JUC呢?JUC就是java.util.concurrent包的简称.它有核心就是CAS与AQS.CAS是java.util.concurrent.at ...

  8. flexible如何实现自动判断dpr?

    判断机型, 找出样本机型去适配. 比如iphone以6为样本, 宽度375px, dpr是2

  9. JDBC如何解决乱码

    只要在连接URL字符里添加参数 ?useUnicode=true&characterEncoding=utf-8 完整的URL字符串如下: 1 String url = "jdbc: ...

  10. 编译器如何处理C++不同类中同名函数(参数类型个数都相同)

    转载请注明出处,版权归作者所有 lyzaily@126.com yanzhong.lee 作者按: 从这篇文章中,我们主要会认识到一下几点: 一.不类中的特征标相同的同名函数,它们是不同的函数,原因就 ...