Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 一列中的组伙伴_Mysql_Sql - Fatal编程技术网

Mysql 一列中的组伙伴

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.files的表中有两列,第一列名为'claim',包含索赔文件编号如4355、6444、7674等,第二列名为'partner',包含合作伙伴代码如8393、4783、38283。 索赔文件编号是唯一的,但每个索赔文件可以有更多的合作伙伴,因此我想运行一个select,它可以将每个索赔文件的所有合作伙伴分组。如果我运行此“select claim,partner from claim.files where claim in(435564447674)group by claim,partner”,如果有更多的合作伙伴,它将复制该索赔

我希望结果如下所示:

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 |