1

我有一张桌子叫AAA. 当我订购表AAACOLUMNI,有一个COLUMNJ需要有值“BINXXXXX”,其中“BINXXXXX”每次都需要增加 1。例如,“BIN00001”,然后是“BIN00002”等......一直到最后。当我订购时它需要这样做COLUMNI

有没有好的方法来做到这一点?

4

2 回答 2

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 是独一无二的。

PS我还没有足够的代表发表评论,所以这是一个答案。

于 2013-09-19T20:07:38.563 回答
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

于 2013-09-19T19:44:50.877 回答