0

警告我是新手,如果问题或解释有任何问题,我很抱歉......

我有一个表“XYZ”,其中包含附件列表(OrigFileName)和一个字段 UniqueAttchID,该字段也在标题表“ABC”上以记录链接,以便您可以查询哪些附件与记录相关。

我需要将所有记录的结果,其中 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 中生成第一条记录

然后,我可以生成一个存储过程以根据需要运行,并在将新文件作为附件添加时更新记录。

4

1 回答 1

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
于 2013-05-14T09:16:07.680 回答