首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UPDATE中将已计数的行添加到运行号中

在UPDATE中将已计数的行添加到运行号中
EN

Stack Overflow用户
提问于 2015-06-29 11:28:59
回答 1查看 49关注 0票数 0

我试图在我们的数据库中使用UPDATE用户名,但是我对UQ有问题。

在我们的模式中,我们在同一个表中有公司管理用户和联系人。每个公司都有一个管理员用户,通过从他们的名字中提取6个字符并添加运行号(如果有6个字符重复的话)。

例如:

CompanyName:测试公司

UserName:testco-1

使用admin用户运行的数字(具有相同的6个字符开始)从1到15不等(Ish)。

我们的联系人表有列CorporateAdminId,与Admin用户一起设置为NULL,但联系人使用此字段引用admin用户。所以这张桌子和它自己有关系。

注意:在联系人没有用户名之前,由于软件升级,我们的联系人也需要用户名。联系人的用户名是用相同的规则(6个char+running号)创建的,前6个字符由AdminUserId引用(而不是联系人自己的公司名称)定义。

例如,

AdminUserId:GUID (指测试公司)

CompanyName:数据矿工

UserName:testco-2

我在这里的问题是,当用'testco'启动f.e时,如何计算数据库中有多少个用户名,并将这个数字添加到我用来创建联系人用户名的运行号中(这样就不会出现与UQ的结束符)

编辑:更新中使用的当前查询

代码语言:javascript
复制
SELECT LEFT(LOWER(REPLACE(A.CorporateName, ' ','')), 10)+'-
    '+CAST(COUNT(*) OVER(PARTITION BY      
    SUBSTRING(A.Username,1,CHARINDEX('0',A.Username)))+(ROW_NUMBER() 
    OVER(PARTITION BY B.AdminUserId ORDER BY
    LEFT(LOWER(REPLACE(A.CompanyName, ' ','')),10))) as nvarchar(255)) FROM
    Contact B INNER JOIN Contact A ON a.Id = B.AdminUserId

这方面的问题是,它添加了要更新的行数,而不是在db中将用户名为'xxxxxx‘的行数。

EN

回答 1

Stack Overflow用户

发布于 2015-06-29 11:48:59

代码语言:javascript
复制
select username, left(username, 6)
     , row_number() (partition by left(username, 6) order by username) rn 
  from table 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31114520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档