sql - 面临填充下一个可用已知值以使用 SQL 替换空值的问题
解决方案
这仅在您有一年的情况下才有效,否则您将需要一列来确定顺序。
如果要选择
Select company
,year = coalesce(year,min(year) over (partition by company))
,Quarter = coalesce(quarter,min(quarter) over (partition by company))
From @YourTable
如果要更新
Declare @YourTable table (company varchar(50), year int,quarter varchar(50))
Insert Into @YourTable values
('abc',null,null)
,('abc',2015,'Q2')
,('abc',2015,'Q3')
,('pqr',null,null)
,('pqr',null,null)
,('pqr',2015,'Q3')
;with cte as (
Select *
,NYear = min(year) over (partition by company)
,NQtr = min(quarter) over (partition by company)
From @YourTable
)
Update cte
set Year =NYear
,Quarter=NQtr
Where Year is null
更新的表格
company year quarter
abc 2015 Q2
abc 2015 Q2
abc 2015 Q3
pqr 2015 Q3
pqr 2015 Q3
pqr 2015 Q3
推荐阅读
- php - Laravel 存储复制不起作用,如何使用存储磁盘复制文件
- vue.js - Vue js在mounted()钩子中加载js文件
- c# - 在 Unity 中使用 ThirdPersonController 的可能性不是用户控制的吗?
- docker - 容器环境中的 Kafka FQDN
- java - Spring boot Pageable - 动态 nativeQuery 。排序过滤器不起作用。(属性未转换为列名)
- java - 从 firebase 数据库填充 listview 数据
- arrays - 嵌套在 JSON 中的 Swift 4.x 可编码数组对象
- wpf - WPF MVVM数据网格在另一个更改时更新属性
- vba - Excel VBA 变量未正确递增
- python - 剩余的连接槽保留给非复制超级用户连接