如何在sql的当前列的帮助下创建新的Id

时间:2015-12-04 11:51:12

标签: sql sql-server-2008 sql-server-2008-r2

我想使用ProductIdSKUCode更新Id

在此我在Id中添加1000000,在skucode中只添加两位数字:

SELECT 
    ProductId,
    LEFT(SKUCode,2) AS SKU,
    10000000 + (ROW_NUMBER() OVER(ORDER BY Id)) AS Number
FROM
    ProductMaster

我得到的结果是如何使用SQL Server 2008 R2中的回滚进行更新

我希望ProductId更新为SKU + Number,其中skuNvarcharNumberInt

结果

enter image description here

2 个答案:

答案 0 :(得分:1)

我不建议在产品ID中编码SKU代码。如果产品被错误分类,那么您必须更改数据库中的大量内容。这就是代理键是个好主意的原因。您可以自由地制作和修复任何真实数据字段中的错误。

如果我理解正确,您可以使用CTE并更新:

执行您想要的操作
with toupdate as (
      select ProductId, LEFT(SKUCode, 2) AS SKU,
             10000000 + (ROW_NUMBER() OVER(ORDER BY Id)) AS Number
      from ProductMaster
     )
update toupdate
    set ProductId = SKU + cast(Number as varchar(255));

答案 1 :(得分:0)

您可以将Number转换为NVARCHAR(),然后在以下内容中连接:

CAST(NUMBER as NVARCHAR(40))