来自一列的组伙伴
我在名为claim.files的一个表中有两列,第一列被命名为'claim'并且包含声明文件编号ex。 4355,6444,7674等,第二个被命名为“合作伙伴”,并包含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
回答:
如果要选择为每个claim
分隔的伙伴逗号,y您可以同时使用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服务器,你可以这样做,而不是:
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 |
以上是 来自一列的组伙伴 的全部内容, 来源链接: utcz.com/qa/265694.html