以编程方式更新w。SQL

以编程方式更新w。SQL,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,我们目前有一个系统设置,为每种类型的工作提供3个字母的“代码”。我能够与管理层进行一点斗争,将它们移动到int值,这样我就可以自动填充并使用唯一标识符运行。所以他们现在同意了 当前表格: tblWorkID WorkID: [3 digit keys] 我想要/需要的是将所有工作ID键更新为int值,升序。这就是我到目前为止所做的: SELECT distinct WorkID from tblWorkID order by WorkID 你知道我如何把逻辑放在那里,根据这些数据创建一个运行

我们目前有一个系统设置,为每种类型的工作提供3个字母的“代码”。我能够与管理层进行一点斗争,将它们移动到int值,这样我就可以自动填充并使用唯一标识符运行。所以他们现在同意了

当前表格:

tblWorkID
WorkID: [3 digit keys]
我想要/需要的是
将所有工作ID键更新为
int
值,升序。这就是我到目前为止所做的:

SELECT distinct WorkID
from tblWorkID
order by WorkID
你知道我如何把逻辑放在那里,根据这些数据创建一个运行的数字吗?或者我是不是想用SQL做的太多了?总共有482个条目,我不想手工完成(但如果需要的话,我会这样做)

如下:(数据显示)

并将其填充到如下内容:

1 Apple Picking
2 Construction
3 General Cleaning
(忽略数字和字母顺序旁边的文本,我将其放在那里进行解释。)

更新:我目前拥有的是WorkID:[3个字母的序列]只是WorkID表中添加的另一个字段(WorkHrs、WorkContact、WorkContract等),因此表中有多个WorkID,比如AAA和AAC——数据完整性非常好,非常模糊

Update2:我当前的表结构如下(我很快会添加另一个ID uniqueidentifier字段):

编辑: 根据您在下面的评论(以及一些假设…),我认为您可以使用密集排名而不是行数:

 SELECT DENSE_RANK () OVER (ORDER BY <your 3 letter code>,
在(按顺序)上选择稠密等级(),
这样,相同三个字母代码的所有实例将得到相同的数字

如果我理解您的意思,您可以使用()函数生成您的跑步号码:

SELECT ROW_NUMBER() OVER (ORDER BY <your 3 letter code>,
...
选择(订单号)上方的行号(),
...
或者,根据您当前的表结构,您可以只添加一列

ALTER表
添加标识(1,1)
编辑: 根据您在下面的评论(以及一些假设…),我认为您可以使用密集排名而不是行数:

 SELECT DENSE_RANK () OVER (ORDER BY <your 3 letter code>,
在(按顺序)上选择稠密等级(),
这样,相同三个字母代码的所有实例将得到相同的数字

如果我理解您的意思,您可以使用()函数生成您的跑步号码:

SELECT ROW_NUMBER() OVER (ORDER BY <your 3 letter code>,
...
选择(订单号)上方的行号(),
...
或者,根据您当前的表结构,您可以只添加一列

ALTER表
添加标识(1,1)
编辑: 根据您在下面的评论(以及一些假设…),我认为您可以使用密集排名而不是行数:

 SELECT DENSE_RANK () OVER (ORDER BY <your 3 letter code>,
在(按顺序)上选择稠密等级(),
这样,相同三个字母代码的所有实例将得到相同的数字

如果我理解您的意思,您可以使用()函数生成您的跑步号码:

SELECT ROW_NUMBER() OVER (ORDER BY <your 3 letter code>,
...
选择(订单号)上方的行号(),
...
或者,根据您当前的表结构,您可以只添加一列

ALTER表
添加标识(1,1)
编辑: 根据您在下面的评论(以及一些假设…),我认为您可以使用密集排名而不是行数:

 SELECT DENSE_RANK () OVER (ORDER BY <your 3 letter code>,
在(按顺序)上选择稠密等级(),
这样,相同三个字母代码的所有实例将得到相同的数字

如果我理解您的意思,您可以使用()函数生成您的跑步号码:

SELECT ROW_NUMBER() OVER (ORDER BY <your 3 letter code>,
...
选择(订单号)上方的行号(),
...
或者,根据您当前的表结构,您可以只添加一列

ALTER表
添加标识(1,1)

为每个工作ID创建一个ID

create table T (id int identity(1,1), WorkID char(3))
    insert T select distinct WorkID from thetable order by WorkID asc
更新现有的

update thetable set WorkID = (select id from T where T.WorkID = thetable.WorkID)

将列类型更改为INT。

为每个工作ID创建一个ID

create table T (id int identity(1,1), WorkID char(3))
    insert T select distinct WorkID from thetable order by WorkID asc
更新现有的

update thetable set WorkID = (select id from T where T.WorkID = thetable.WorkID)

将列类型更改为INT。

为每个工作ID创建一个ID

create table T (id int identity(1,1), WorkID char(3))
    insert T select distinct WorkID from thetable order by WorkID asc
更新现有的

update thetable set WorkID = (select id from T where T.WorkID = thetable.WorkID)

将列类型更改为INT。

为每个工作ID创建一个ID

create table T (id int identity(1,1), WorkID char(3))
    insert T select distinct WorkID from thetable order by WorkID asc
更新现有的

update thetable set WorkID = (select id from T where T.WorkID = thetable.WorkID)


将列类型更改为INT。

是否要更改列的数据类型,或添加新标识列?是否要更改列的数据类型,或添加新标识列?是否要更改列的数据类型,或添加新标识列?是否要更改列的数据类型,或添加新标识列新的标识栏?谢谢,但是既然不同的记录与工作ID绑定,我如何确保它们保持“链接?”修改了我的应答器,看看这是否是你的意思。好的,我有以下内容:
SELECT densite\u RANK()(按工作ID排序)从包含正确信息的tblWorkID
开始,现在如何/在何处放置update语句?是否有要将其放入的现有列?基本上是执行更新并用新值替换现有的WorkID字段。谢谢,但是由于不同的记录与WorkID绑定,我如何确保它们保持“链接”修改了我的answser,看看这是否是你的意思。好吧,我有这样一个:
SELECT densite\u RANK()OVER(ORDER BY WorkID)从包含正确信息的tblWorkID
开始,现在如何/在何处放置update语句?是否有要将其放入的现有列?基本上是执行更新并用新值替换现有的WorkID字段。谢谢,但是由于不同的记录与WorkID绑定,我如何确保它们保持“链接”修改了我的answser,看看这是否是你的意思。好吧,我有这样一个:
SELECT densite\u RANK()OVER(ORDER BY WorkID)从包含正确信息的tblWorkID
开始,现在如何/在何处放置update语句?是否有要将其放入的现有列?基本上是执行更新并用新值替换现有的WorkID字段。谢谢,但是由于不同的记录与WorkID绑定,我如何确保它们保持“链接”修改了我的answser,看看这是否是你的意思。好吧,我有这样一个:
从tblWorkID中选择DENSE_RANK()(按工作ID排序)
它包含正确的信息,现在我该如何/在哪里放置update语句?你想将它放在现有的列中吗?基本上是进行更新并替换现有的工作ID