我有一张桌子叫AAA
. 当我订购表AAA
时COLUMNI
,有一个COLUMNJ
需要有值“BINXXXXX”,其中“BINXXXXX”每次都需要增加 1。例如,“BIN00001”,然后是“BIN00002”等......一直到最后。当我订购时它需要这样做COLUMNI
。
有没有好的方法来做到这一点?
我有一张桌子叫AAA
. 当我订购表AAA
时COLUMNI
,有一个COLUMNJ
需要有值“BINXXXXX”,其中“BINXXXXX”每次都需要增加 1。例如,“BIN00001”,然后是“BIN00002”等......一直到最后。当我订购时它需要这样做COLUMNI
。
有没有好的方法来做到这一点?
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我还没有足够的代表发表评论,所以这是一个答案。
SELECT COLUMNI,
COLUMNJ =
'BIN' + RIGHT('0000'+ CONVERT(VARCHAR(20),ROW_NUMBER()OVER(ORDER BY COLUMNI ASC)),5)
FROM dbo.AAA
这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