一列中的小组合作伙伴

时间:2017-12-27 14:28:58

标签: mysql sql

我在一个名为claim.files的表中有两列,第一列名为'claim',并包含索引文件编号ex。 4355,6444,7674等,第二个被命名为'partner'并包含ex的合作伙伴代码。 8393,4783,38283。 索赔文件编号是唯一的,但每个索赔文件可以包含更多合作伙伴,因此我想运行一个选项,可以为每个索赔文件分组所有合作伙伴。如果我运行这个“选择索赔,来自claim.files的合作伙伴,其中索赔(4355,6444,7674)按索赔分组,合作伙伴”如果它有更多的合作伙伴,它将复制索赔。

我希望结果如下:

claim  partners
4355   57878, 45874, 58977

如果我运行以下代码,它将复制索赔号

select claim, partner from claim.files where claim in (4355, 6444, 7674) group by claim, partner

如果我运行上面的选择

,结果如何
 claim  partners
   4355  57878
   4355  45874
   4355  58977

1 个答案:

答案 0 :(得分:1)

如果您想为每个claim选择分隔的合作伙伴逗号,可以使用group_concat

select claim, group_concat(partner separator ',') as partners
from files 
where snr in (4355, 6444, 7674) 
group by claim;

Demo

| claim |          partners |
|-------|-------------------|
|  4355 | 57878,45874,58977 |

已更新:如果您使用的是SQL Server,则可以改为:

SELECT
    f1.claim,
    STUFF((
          SELECT ',' + CAST(f2.partner AS NVARCHAR(50))
          FROM files as f2
          where snr in (4355, 6444, 7674) 
            and f1.claim = f2.claim
          FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS partners
FROM files as f1
where snr in (4355, 6444, 7674) 
group by f1.claim;

- SQL Server demo

| claim |          partners |
|-------|-------------------|
|  4355 | 57878,45874,58977 |