我有一个名为empl_type_multi的列,它只是逗号分隔的列,每个值都是指向另一个称为自定义标题的表的链接。TSQL,在逗号分隔列上更改值
例如,我可能有以下作为empl_type_multi值:
123, RHN, 458
然后在custom_captions表这些是单个值:
123 = Dog
RHN = Cat
458 = Rabbit
所有这些领域都是NTEXT。
什么,我试图做的是转换empl_type_multi列,在上面的例子中它有机会在custom_captions表中各自的名称,所以:
123, RHN, 458
将成为
Dog, Cat, Rabbit
任何对此的帮助将不胜感激。
-----编辑---------------------------------------- --------------------------
好吧,所以我设法将这些值转换为相应的标题,并将它们全部放到临时表中,以下是从CTE查询的输出放在桌子上:
ID1 ID2 fName lName Caption_name Row_Number
10007 22841 fname1 lname1 DENTAL ASSISTANT 1
10007 22841 fname1 lname1 2
10007 22841 fname1 lname1 3
10008 23079 fname2 lname2 OPS WARD 1
10008 23079 fname2 lname2 DENTAL 2
10008 23079 fname2 lname2 3
使下标题名称,也被添加到用逗号分隔ROW_NUMBER 1的标题名称我怎么能更新吗?
如果我能做到这一切,我需要做的就是删除所有记录ROW_NUMBER!= 1
------编辑--------------- -----------------------------------
第一次编辑的解决方案是:
WITH CTE AS
(
SELECT
p.ID1
, p.ID2
, p.fname
, p.lname
, p.caption_name--
, ROW_NUMBER() OVER (PARTITION BY p.id1ORDER BY caption_name DESC) AS RN
FROM tmp_cs p
)
UPDATE tblPerson SET empType = empType + ', ' + c.Data
FROM CTE c WHERE [DB1].dbo.tblPerson.personID = c.personID AND RN = 2
然后我只是递增RN = 2,直到我得到0行受影响。
这之后,我跑:
DELETE FROM CTE WHERE RN != 1 AND Caption_name = ''
这听起来像循环容易构建CAPTION_NAME串你需要规范你的数据结构。 – artm
这不是我的数据库,我被给了它,并被告知将这些数据导出到Excel电子表格中。 –