我有一个包含道路名称和道路类型的数据集。有许多缺少的道路名称,我想用一个简单的字符串来填充缺失的名称,声明道路类型,然后是一个唯一的整数标识符,如下所示。
Path1 Path2路..。
我正在尝试使用declare函数,但是在我的语句中有些地方不正确。
DECLARE @i int
SET @i=0
UPDATE KMS_VEJMIDT_BRUDT
SET VEJNAVN = "Sti"+Str(@i), @i=@i+1
WHERE (((KMS_VEJMIDT_BRUDT.VEJNAVN) Is Null) AND ((KMS_VEJMIDT_BRUDT.VEJMTYPE)="Sti"));发布于 2017-06-10 00:33:21
编辑:--我稍微误解了这个问题--我添加了"Sti“作为生成数字的前缀,从1开始
您可以在一个3步的过程中完成这一点,如this answer中所描述的。我假设您在KMS_VEJMIDT_BRUDT表中有一个ID主键字段。
步骤1:
使用以下SQL进行名为SELECT的GENERATE_NEXT_NAVN查询:
SELECT C.ID, "Sti"&[RowNo] AS NEXT_VEJNAVN
FROM (SELECT A.ID,
A.VEJMTYPE,
(select count(*) from KMS_VEJMIDT_BRUDT as B where A.ID>=B.ID AND B.VEJNAVN Is Null and A.VEJMTYPE = "Sti" ) AS RowNo
FROM KMS_VEJMIDT_BRUDT AS A
WHERE A.VEJNAVN Is Null
and A.VEJMTYPE = "Sti"
) AS C;请注意行号解决方案的使用,如this answer中所述。我使用它生成一个递增的数字,从源表中的最高NAVN开始。
步骤2:将查询输出从步骤1复制到临时表中:
SELECT GENERATE_NEXT_NAVN.*
INTO NEXT_NAVN_TEMP
FROM GENERATE_NEXT_NAVN;步骤3:使用临时表中的值更新源表:
UPDATE KMS_VEJMIDT_BRUDT
INNER JOIN NEXT_NAVN_TEMP
ON KMS_VEJMIDT_BRUDT.ID = NEXT_NAVN_TEMP.ID
SET KMS_VEJMIDT_BRUDT.VEJNAVN = [NEXT_NAVN_TEMP].[NEXT_VEJNAVN];https://stackoverflow.com/questions/44459509
复制相似问题