【问题标题】:Incorporate a concatenation and count in a SQL update command?在 SQL 更新命令中包含连接和计数?
【发布时间】:2020-04-06 08:56:15
【问题描述】:

我正在寻找一种更新记录的方法,以便每个条目在字符串末尾添加 1。就我而言,我正在尝试更新名为 FiberID 的字段。每个记录都应该有 JCK0.R000.Ax,其中 x 等于 1,2,3...,24。

理想结果:

FiberID
JCK0.R000.A1
JCK0.R000.A2
JCK0.R000.A3

...以此类推,直到到达 A24。

以下是数据示例。

这似乎很有用,我敢肯定它之前已经在这里讨论过,但出于某种原因,我什么也没看到。

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。
  • @GordonLinoff,会的,谢谢

标签: sql sql-server database sql-server-2012 concatenation


【解决方案1】:

您可以使用 row_number 和可更新的 CTE:

with cte as (
    select 
        fiber_id,
        concat(
            fiber_id,
            '.A',
            cast(row_number() over (partition by fiber_id order by id) as varchar(2))
        ) new_fiber_id
    from mytable
)
update cte set fiber_id = new_fiber_id

这假设您有一个名为 id 的列,可用于排序具有相同 fiber_id 的记录。

旁注:不清楚为什么每个fiber_id 应该有 24 个数字,并且您的样本数据没有描述这一点。这将为重复的fiber_ids 分配越来越多的数字,无论有多少。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多