0

我有一列(状态),值将是等待或 on_process 或完成。我会检查 velue 是否在等待,所以我会得到最大数字(例如 waiting1,waiting2 --> 所以最大值是 waiting2)然后我会 +1 它的最大值,所以下一个状态将是 waiting3..

col_status
waiting1
waiting2
on_process
完成
......

这是我的代码:

create PROCEDURE SP_queue
AS
BEGIN
    DECLARE @NEWID VARCHAR(5);
    select @NEWID = max(convert(int,SUBSTRING(status, 8, 2)))  FROM myTable

SELECT 'Waiting'+convert(VARCHAR, @NEWID+1)
END

但是如果该列有另一个值(例如on_process),我有错误..所以任何人都可以帮助我如何使用if语句检查,如果值正在等待,那么将获得最大值,如果值是on_process /完成然后什么都不做..

谢谢..

4

2 回答 2

1

尝试使用 where 条件:

SELECT
  @NEWID = max(convert(int,SUBSTRING(status, 8, 2)))  
FROM myTable
WHERE [status]='Waiting'
于 2013-01-03T09:38:53.600 回答
0

我会使用字符串更改为数字。为每个状态设置一些特殊值,即。100 以下不是等待,而 100、101、102、... 是等待链。它会更容易和更清洁。

于 2013-01-03T09:28:54.527 回答