找出一列文本中的无序数据

问题描述 投票:0回答:1

我在SQL Server中有一个表,用于跟踪销售订单的工作状态变化。

首次输入订单时,会自动处于

NEW
状态。

当订单中填充有产品并准备发货时,人工处理人员会将其置于

READY
状态。

我们的运输部门随后会打开一个表格,显示所有处于

READY
状态的订单,并运行选项列表报告。届时,订单将以编程方式置于“已挑选”状态。

现在,问题来了。有时,由于未知的原因,状态会被设置为

PICKED
,而它不应该是由自动化的东西设置的,或者有时是由用户意外设置的。

PICKED
状态只能在
READY
PARTIALSHIP
状态之前,不能有其他任何内容。

我需要搜索表格以查找状态更改为

PICKED
且前面没有
READY
PARTIALSHIP
的情况。

我似乎不知道如何解决这个问题。

这是我正在处理的数据的示例。

sro_num    seq  stat_code
-------------------------
SO00053427  1   NEW
SO00053427  2   READY
SO00053427  3   PICKED
SO00053427  4   SHIPPED
SO00053427  5   INVOICED
SO00053441  1   NEW
SO00053441  2   INV HOLD
SO00053441  3   PICKED
SO00053441  4   PARTIALSHP
SO00053441  5   BILLMGRHLD
SO00053441  6   INV HOLD
SO00053441  7   PARTIALSHP
SO00053441  8   PARTIALINV
SO00053441  9   BILLMGRHLD
SO00053441  10  INV HOLD
SO00053441  11  READY
SO00053441  12  PICKED
SO00053441  13  SHIPPED
SO00053441  14  INVOICED

我一直在寻找有关如何处理序列的想法,但我找到的只是处理编号列表的解决方案。不是文字。

任何帮助将不胜感激。

sql sql-server sequencing
1个回答
0
投票
WITH CTE as
(  
SELECT *,LAG(stat_code,1) over (partition by sro_num order by seq) as Prev_Stat 
FROM Example
)
SELECT * FROM 
CTE 
WHERE stat_code='PICKED'
© www.soinside.com 2019 - 2024. All rights reserved.