SQL Server,用计数器更新?

时间:2013-09-19 19:40:30

标签: sql sql-server

我有一张名为AAA的表格。当我按AAA订购表COLUMNI时,有一个COLUMNJ需要输入值“BINXXXXX” 其中“BINXXXXX”每次需要增加1。例如,“BIN00001”,然后是“BIN00002”等....一直到最后。我按COLUMNI订购时需要执行此操作。

有没有好办法呢?

2 个答案:

答案 0 :(得分:3)

UPDATE a
SET a.COLUMNJ = b.COLUMNJ
FROM dbo.AAA a
INNER JOIN
(SELECT COLUMNI, 
        COLUMNJ = 
'BIN' + RIGHT('0000'+ CONVERT(VARCHAR(8),ROW_NUMBER()OVER(ORDER BY COLUMNI ASC)),5) 
FROM dbo.AAA)b
ON b.COLUMNI = a.COLUMNI

借用Tim上面的工作,这应该用正确的值更新你的表。当然,假设COLUMNI是独一无二的。

P.S。我还没有足够的代表发表评论,所以这就是答案。

答案 1 :(得分:1)

SELECT COLUMNI, 
       COLUMNJ = 
'BIN' + RIGHT('0000'+ CONVERT(VARCHAR(20),ROW_NUMBER()OVER(ORDER BY COLUMNI ASC)),5) 
FROM dbo.AAA

Demo

UPDATE部分对我来说并不清楚,但这里有一个使用CTE的例子:

WITH CTE AS (
    SELECT AAA.*, 
           BIN_Num = 'BIN' 
                   + RIGHT('0000'+ CONVERT(VARCHAR(20), ROW_NUMBER() OVER ( 
                        ORDER  BY  COLUMNI ASC)), 5) 
         FROM   dbo.AAA) 
UPDATE CTE SET COLUMNJ = BIN_Num

Demo