警告我是新手,如果问题或解释有任何问题,请对不起......
我有一个表'XYZ',其中有一个附件列表(OrigFileName)和一个字段UniqueAttchID,它也在标题表'ABC'上,用于记录链接,以便您可以查询哪些附件与记录相关。
我需要在Header上将UniqueAttchID相等的所有记录的结果添加回标题'ABC'这个名为'udAttch'的字段,这是一个用分隔符格式化的备注字段
这是为了解决我可用的报告功能的限制,因为我只能使用数据库中的实际字段而不是相关表。
当前设置: -
XYZ Table
UniqueAttchID OrigFileName
---------- -------------
18181818181 | Filename1
18181818181 | Filename2
18181818181 | Filename3
18181818182 | Filename1
ABC Table -
Description|Field2|UniqueAttchID|
test item |test |18181818181
Test item 2|test2 |18181818182
期望的结果: -
(XYZ表将保持不变)
ABC Table -
Description|Field2|UniqueAttchID|udAttch|
test item |test |18181818181 |Filename1, Filename2, Filename3|
Test item 2|test2 |18181818182 |Filename1|
我已经尝试过使用COALESCE但是这并没有为每个UniqueAttchID提供单独的记录,只为所有记录提供一条记录,而SELECT DISTINCT只生成了OrigFileName中的第一条记录
然后,我可以生成存储过程以根据需要运行,并在将新文件添加为附件时更新记录。
答案 0 :(得分:0)
请尝试:
select
*,
STUFF((SELECT ',' + OrigFileName
FROM XYZ b WHERE b.UniqueAttchID=a.UniqueAttchID
FOR XML PATH(''),type).value('.','nvarchar(max)'),1,1,'') AS [udAttch]
From ABC a