sql - 对于 SQL Server 中的此类数据,我应该使用什么循环?
问题描述
我有一个包含 3 列状态、下一个状态和默认值(0,1)的数据列表。我如何遍历数据并获得默认 = 1 的最后状态。
这是我的表的样子。
ID Status Next Status Default
--------------------------------
1 PASS FAIL 0
2 PASS HOLD 0
3 PASS RELE 1
4 FAIL EXEM 0
5 FAIL HOLD 1
6 HOLD RELE 0
7 RELE HOLD 0
8 RELE CANC 0
例如 my Status
is PASS
,现在它将在表中循环并检查默认 = 1 的最后一个状态。
示例 1:通过 - RELE - 1
由于 RELE 处于下一个状态,它将查看 RELE。
RELE CANC 0 当下一个状态默认变为 0 时将获得 RELE。
解决方案
我有一个包含 3 列状态、下一个状态和默认值(0,1)的数据列表。我如何遍历数据并获得默认 = 1 的最后状态。
这是我的表的样子。
Status Next Status Default -------------------------------- PASS FAIL 0 PASS HOLD 0 PASS RELE 1 FAIL EXEM 0 FAIL HOLD 1 HOLD RELE 0 RELE HOLD 0 RELE CANC 0
示例我的状态为 PASS,现在它将在表中循环并检查默认 = 1 的最后一个状态。
示例 1:通过 - RELE - 1
由于 RELE 处于下一个状态,它将查看 RELE。
RELE CANC 0 当下一个状态默认变为 0 时将获得 RELE。
我不确定我是否正确理解了要求。
这是我的理解:对于任何给定的状态,您需要弄清楚其先前的状态(如果有),默认值 = 1。而且我知道“状态”列值是给定值“下一个”的先前状态行中的“状态”列。如果我的这种理解是错误的,请纠正我。
有了这种理解,以下是 2 个查询,具体取决于您对该程序的输入:
- 状态是否会成为查询的输入?如果是这样:
2> 如果您需要为表的状态列中可用的每个状态检索此信息,则:SELECT DISTINCT S.Status ,LastStatus = OA.Status FROM Status S OUTER APPLY ( SELECT TOP 1 SI.Status FROM Status SI WHERE SI.[Next Status] = S.Status AND SI.Default = 1 ) OA WHERE S.Status = '<input status name>';
SELECT DISTINCT S.Status ,LastStatus = OA.Status FROM Status S OUTER APPLY ( SELECT TOP 1 SI.Status FROM Status SI WHERE SI.[Next Status] = S.Status AND SI.Default = 1 ) OA;
推荐阅读
- java - SupplyAsync 等待所有 CompletableFutures 完成
- java - 在改造调用的标头中设置授权令牌后出现未经授权的错误
- angular - 如何将点击事件添加到 kendoGridCellTemplate
- javascript - Javascript 日期转换和夏令时
- laravel - AbstractRouteCollection 和 Application.php 中的 laravel NotFoundHttpException
- linux - 使用linux终端从一天中提取月份
- java - 如何使用提交按钮进行数字输入,更改,然后输出?
- php - 如何使用 php 将文本文件读入 HTML 表格?
- amazon-web-services - 我的 ec2 实例在 yum 更新和重启后终止
- html - 为什么在第三行之后 float 属性不能正常工作?