如何检查特定列上的当前值(SQL服务器)

时间:2013-01-03 09:25:59

标签: sql sql-server sql-server-2005

我有一列(状态),值将等待或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则不做任何事情。

感谢..

2 个答案:

答案 0 :(得分:1)

尝试使用where条件:

SELECT
  @NEWID = max(convert(int,SUBSTRING(status, 8, 2)))  
FROM myTable
WHERE [status]='Waiting'

答案 1 :(得分:0)

我会使用字符串更改为数字。为每个州设置一些特殊值,即。 100以下是除了等待之外的其他东西,从100,101,102 ......等待连锁。它将更容易和更清洁。