介绍关于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 列的其他表插入记录,系统 ...
随机推荐
- rest-framework之视图和源码解析
视图和源码解析 通过使用mixin类编写视图: from rest_framework import mixins from rest_framework import generics class ...
- Poco实体
在Poco实体中,一般只有属性没有方法,这在软件设计中称为贫血模型, 在DDD领域驱动设计中,提倡充血模型,即你的Poco实体中,即有属性,也有操作属性的方法,[PS:注意这里说的是操作属性的方法,你 ...
- Java注释相关以及IDEA配置相关的注释
本文章主要包括以下6个内容: 一.注释分类以及javadoc的使用 二.使用Alibaba Java Coding Guidelines规范编码. 三.IDEA配置类注释 四.IDEA配置方法注释 = ...
- 『忘了再学』Shell基础 — 5、Bash基本功能(命令的别名和常用快捷键)
目录 1.给命令设置别名 (1)设置别名的命令格式 (2)命令别名永久生效 (3)别名的优先级 2.Bash常用快捷键 1.给命令设置别名 Linux系统的命令别名我们之前已经说过了,这里再过一边. ...
- MySQL 里记录货币用什么字段类型好?
NUMERIC 和 DECIMAL 类型被 MySQL 实现为同样的类型,这在 SQL92 标准允 许.他们被用于保存值,该值的准确精度是极其重要的值,例如与金钱有关的数 据.当声明一个类是这些类型之 ...
- Spring MVC的异常处理 ?
可以将异常抛给Spring框架,由Spring框架来处理:我们只需要配置简单的异常处理器,在异常处理器中添视图页面即可.
- redis 是什么?都有哪些使用场景?
一.什么是redis 首先要说redis,应该先说一下nosql,NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",泛指非关系型的数据库.随着互联网 ...
- forward和redirect的区别?http状态码301,302分别代表什么?
一.forward和redirect的区别 从地址栏显示来说:forward是服务器内部重定向,客户端浏览器的网址不会发生变化:redirect发生一个状态码,告诉服务器去重新请求那个网址,显示的的新 ...
- Executors 类是什么?
Executors 为 Executor,ExecutorService,ScheduledExecutorService, ThreadFactory 和 Callable 类提供了一些工具方法. ...
- Netty学习摘记 —— 心跳机制 / 基于分隔符和长度的协议
本文参考 本篇文章是对<Netty In Action>一书第十一章"预置的ChannelHandler和编解码器"的学习摘记,主要内容为通过 SSL/TLS 保护 N ...