【问题标题】:Adding integer increment after string for missing values ms-access在缺失值的字符串后添加整数增量 ms-access
【发布时间】:2017-11-11 13:45:04
【问题描述】:

我有一个包含道路名称和道路类型的数据集。有许多缺失的道路名称,我想用一个简单的字符串声明道路类型,后跟一个唯一整数标识符来填充缺失的名称,如下所示。

路径1 路径2 路径...

我正在尝试使用 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"));

【问题讨论】:

标签: sql ms-access ms-access-2007


【解决方案1】:

编辑:我稍微误读了这个问题 - 我添加了“Sti”作为生成数字的前缀,并从 1 开始

您可以按照this answer 中的说明分三步完成此操作。我假设您在 KMS_VEJMIDT_BRUDT 表中有一个 ID 主键字段。

第 1 步:

使用以下 SQL 进行名为 GENERATE_NEXT_NAVNSELECT 查询:

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];

【讨论】:

  • 哦,太好了!很高兴为您提供帮助 :-) 如果您接受我的回答,我将不胜感激
猜你喜欢
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
  • 2021-07-26
相关资源
最近更新 更多