【问题标题】:List unique values from column based on an ID Field根据 ID 字段列出列中的唯一值
【发布时间】:2013-05-08 10:19:41
【问题描述】:

警告我是新手,如果问题或解释有任何问题,请见谅......

我有一个表“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 中生成第一条记录

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

【问题讨论】:

标签: sql tsql string-concatenation


【解决方案1】:

请尝试:

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

【讨论】:

    猜你喜欢
    • 2020-04-15
    • 2019-02-26
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2021-04-29
    • 2022-01-13
    • 2021-02-28
    • 2013-11-21
    相关资源
    最近更新 更多