简体   繁体   English

组合组中列的值

[英]Combine values of a column in a group by

tblA has columns EOD_Job_ID and Firm_ID tblA 有 EOD_Job_ID 和 Firm_ID 列

tblA
EOD_Job_ID Firm_ID
1          111
1          222
2          333
2          444

How to group by EOD_Job_ID and combine the Firm_IDs?如何按 EOD_Job_ID 分组并组合 Firm_ID?

Desired result:想要的结果:

EOD_Job_ID Firm_ID
1          111,222
2          333,444

I'd suggest to use the FOR XML PATH method to concatenate strings.我建议使用 FOR XML PATH 方法来连接字符串。 Just make sure in case your Firm_ID is of integer type you cast it to (n)nvarchar first只要确保您的 Firm_ID 是整数类型,您首先将其转换为 (n)nvarchar

SELECT DISTINCT EOD_Job_ID, STUFF((SELECT ',' + CAST(Firm_ID AS nvarchar(3)) 
                                   FROM @tblA
                                   WHERE EOD_Job_ID = tbl.EOD_Job_ID FOR XML PATH('')),1,1,'') AS Firm_ID
FROM @tblA tbl

If you adjust the code from that link to you table, it will be:如果您将该链接中的代码调整到您的表格,它将是:

 SELECT Main.EOD_Job_ID,
       LEFT(Main.Students,Len(Main.Students)-1) As Students
FROM
    (
        SELECT DISTINCT ST2.EOD_Job_ID, 
            (
                SELECT cast(ST1.Firm_ID as varchar(5)) + ',' AS [text()]
                FROM tblA ST1
                WHERE ST1.EOD_Job_ID = ST2.EOD_Job_ID
                ORDER BY ST1.EOD_Job_ID
                FOR XML PATH ('')
            ) [Students]
        FROM tblA ST2
    ) [Main]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM