我在一个名为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
答案 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;
| claim | partners |
|-------|-------------------|
| 4355 | 57878,45874,58977 |