Mysql 一列中的组伙伴
我在一个名为claim.files的表中有两列,第一列名为'claim',包含索赔文件编号如4355、6444、7674等,第二列名为'partner',包含合作伙伴代码如8393、4783、38283。 索赔文件编号是唯一的,但每个索赔文件可以有更多的合作伙伴,因此我想运行一个select,它可以将每个索赔文件的所有合作伙伴分组。如果我运行此“select claim,partner from claim.files where claim in(435564447674)group by claim,partner”,如果有更多的合作伙伴,它将复制该索赔 我希望结果如下所示:Mysql 一列中的组伙伴,mysql,sql,Mysql,Sql,我在一个名为claim.files的表中有两列,第一列名为'claim',包含索赔文件编号如4355、6444、7674等,第二列名为'partner',包含合作伙伴代码如8393、4783、38283。 索赔文件编号是唯一的,但每个索赔文件可以有更多的合作伙伴,因此我想运行一个select,它可以将每个索赔文件的所有合作伙伴分组。如果我运行此“select claim,partner from claim.files where claim in(435564447674)group by c
claim partners
4355 57878, 45874, 58977
如果我运行下面的代码,它将复制索赔编号
select claim, partner from claim.files where claim in (4355, 6444, 7674) group by claim, partner
如果我运行上面的select,结果将是这样的
claim partners
4355 57878
4355 45874
4355 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语句。这是什么?Group by仅适用于sum()或average()之类的函数。请解释如果一个声明是唯一的,那么它如何可以拥有更多的合作伙伴,以及snr在图片中的位置。对不起,我编辑了now@haxx您所说的sql客户端是什么意思?它怎么不起作用?没有提供预期的结果?或者您有错误吗?我有错误:错误:[SQL0204]未找到*LIBL type*N中的组\u CONCAT。SQLState:42704错误代码:-204@haxx您使用的是sql server还是mysql??您正在用MySQL标签标记您的问题!!!!我正在使用的函数是mysql sepecific。@haxx-请参阅我的sql server解决方案更新答案。它不是sql server,我使用名为“squirrel sql”的sql客户端连接数据库,它是DB2类型的数据库
| claim | partners |
|-------|-------------------|
| 4355 | 57878,45874,58977 |
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 |