sql – 如何获取空值的先前值
发布时间:2021-01-13 14:05:47 所属栏目:MsSql教程 来源:网络整理
导读:我的表格中有以下数据. | Id | FeeModeId |Name | Amount| --------------------------------------------- | 1 | NULL | NULL | 20 | | 2 | 1 | Quarter-1 | 5000 | | 3 | NULL | NULL | 2000 | | 4 | 2 | Quarter-2 | 8000 | | 5 | NULL | NULL | 5000 | |
|
我的表格中有以下数据. | Id | FeeModeId |Name | Amount| --------------------------------------------- | 1 | NULL | NULL | 20 | | 2 | 1 | Quarter-1 | 5000 | | 3 | NULL | NULL | 2000 | | 4 | 2 | Quarter-2 | 8000 | | 5 | NULL | NULL | 5000 | | 6 | NULL | NULL | 2000 | | 7 | 3 | Quarter-3 | 6000 | | 8 | NULL | NULL | 4000 | 如何编写这样的查询以获得低于输出… | Id | FeeModeId |Name | Amount| --------------------------------------------- | 1 | NULL | NULL | 20 | | 2 | 1 | Quarter-1 | 5000 | | 3 | 1 | Quarter-1 | 2000 | | 4 | 2 | Quarter-2 | 8000 | | 5 | 2 | Quarter-2 | 5000 | | 6 | 2 | Quarter-2 | 2000 | | 7 | 3 | Quarter-3 | 6000 | | 8 | 3 | Quarter-3 | 4000 | 解决方法请尝试:select
a.ID,ISNULL(a.FeeModeId,x.FeeModeId) FeeModeId,ISNULL(a.Name,x.Name) Name,a.Amount
from tbl a
outer apply
(select top 1 FeeModeId,Name
from tbl b
where b.ID<a.ID and
b.Amount is not null and
b.FeeModeId is not null and
a.FeeModeId is null order by ID desc)x
要么 select
ID,ISNULL(FeeModeId,bFeeModeId) FeeModeId,ISNULL(Name,bName) Name,Amount
From(
select
a.ID,a.FeeModeId,a.Name,a.Amount,b.ID bID,b.FeeModeId bFeeModeId,b.Name bName,MAX(b.FeeModeId) over (partition by a.ID) mx
from tbl a left join tbl b on b.ID<a.ID
and b.FeeModeId is not null
)x
where bFeeModeId=mx or mx is null (编辑:天瑞地安资讯网_瑞安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 数据库设计 – 具有快速(lt;1s)读取查询性能的大型(gt; 22万
- sql-server – 如何从SQL Server Express 2005恢复删除的表
- 分析SQL Server删除重复行的6个方法
- SQL建立数据库及删除数据库操作
- sql-server – 从大数据集中删除重复项(gt; 100Mio行)
- sql-server – 如何从MS SQL中的text / varchar中选择正则表
- sql server中datetime的内部表示是什么?
- @OrderBy导致java.lang.ClassCastException:antlr.CommonT
- sql-server – sysmultiobjrefs SQL 2005上的TempDB争用
- sql – 在运行更高级的查询时关闭对象时不允许操作
站长推荐
- sql-server – SQL Server代理作业和可用性组
- sql-server – 如何在SQL Server中合并两个数据库
- sql-server – 我是否在unicode的“insert into”
- sql-server – IntelliSense无法正常工作但已启用
- SQL Server 2008:将列值转换为行
- sql-server – 为安全(SSL)连接配置的MS SQL Ser
- SQL – WHERE AGGREGATEgt; 1
- sql-server – Windows 2008R2上SQL 2008R2的推荐
- 实体框架 – 具有Identity列的SQL Server Compac
- sql-server – 在WCF中处理图像
热点阅读

