我有一列(状态),值将等待或on_process或完成。我将检查velue是否在等待,所以我将获得最大数量(例如,waiting1,waiting2 - >所以最大值是wait2)然后我将+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 / finished则不做任何事情。
感谢..
答案 0 :(得分:1)
尝试使用where条件:
SELECT
@NEWID = max(convert(int,SUBSTRING(status, 8, 2)))
FROM myTable
WHERE [status]='Waiting'
答案 1 :(得分:0)
我会使用字符串更改为数字。为每个州设置一些特殊值,即。 100以下是除了等待之外的其他东西,从100,101,102 ......等待连锁。它将更容易和更清洁。