sql-server-2012 - 更新 SQL Select 语句中每一行的变量
问题描述
我正在尝试根据不等于 1000 的最新代码更新列,如果有重复的 1000 代码,它们应该都更改为不等于 1000 的最新代码。
在 SQL Server 2012 中,我尝试了滞后语句,创建行 ID 并加入到同一个表 -1 行,这两者都可以工作,但问题是重复的。一行可以有很多 1000 个代码,但我需要保留时间戳并将它们全部更改为不等于 1000 的最新代码
SELECT
EqmtID
,Reason
,StartTime
FROM cyclesRID
产生:
EqmtID Reason StartTime
1903010010000030808 1007 23759
1903010010000030808 1005 24965
1903010010000030808 1000 25382
1903010010000030808 1000 26078
1903010010000030808 1000 27180
1903010010000030808 1000 27761
1903010010000025572 1004 8601
我需要编辑 select 语句以生成:
EqmtID Reason StartTime
1903010010000030808 1007 23759
1903010010000030808 1005 24965
1903010010000030808 1005 25382
1903010010000030808 1005 26078
1903010010000030808 1005 27180
1903010010000030808 1005 27761
1903010010000025572 1004 8601
同样按 EqmtID 分区,如果分区的第一行有 1000 代码,则应更改为 1001。
如果我在 Python 中执行此操作,我将使用一个仅在不等于 1000 时才更新的变量。可以在 SQL 中完成类似的操作吗?
解决方案
一种选择是使用相关子查询来查找1000
Reason
要用于更新的最近的非代码:
UPDATE c1
SET Reason = (SELECT TOP 1 Reason FROM cyclesRID c2
WHERE c2.EqmtID = c2.EqmtID AND
Reason <> 1000 AND c2.StartTime < c1.StartTime
ORDER BY StartTime DESC)
FROM cyclesRID c1
WHERE Reason = 1000;
演示
推荐阅读
- kubernetes - 将 nginx 公开为负载均衡器与入口控制器有什么区别?
- php - Laravel 5.5 无法连接到数据库
- mapbox - 如何从源是mapbox gl js中的矢量瓦片的图层上的queryRenderedFeatures的结果中获取特征geojson?
- javascript - 使用jquery添加没有值的单个属性
- sql - 从列表中获取自定义不同值
- dependency-injection - Play Framework:子模板中的依赖注入
- kubernetes - NoExecute、NoSchedule、PreferNoSchedule 有什么区别?
- css - 如何将图像放在跨度中
- python - 使用 matplotlib.pyplot 时,tkinter GUI 不会以“X”终止
- c - 如何在 FreeBSD 系统调用 openat 中获取绝对路径?