查询根据属性对单元格数据进行分组的查询

时间:2019-01-15 04:36:20

标签: sql string-aggregation

我需要调查在像这样的表上进行查询的表单:

' 331431'

来自属性A的具有相似值的行被分组为一列,尽管来自属性C的不同值被合并在一起。

如果可以提供帮助,请告诉我。谢谢

2 个答案:

答案 0 :(得分:0)

您可以简单地执行以下操作:

SELECT A, B, C = 
(SELECT ' ' + C
       FROM #yt b 
       WHERE b.A = a.A and b.B = a.B 
      FOR XML PATH(''))
FROM #yt a
GROUP BY A, B

我用了这个:

CREATE TABLE #yt
    ([A] int, [B] varchar(25), [C] int)
;

INSERT INTO #yt
    ([A], [B], [C])
VALUES
    (1, 'x', 2),
    (1, 'x', 3),
    (1, 'x', 4),
    (2, 'y', 5),
    (2, 'y', 6);

答案 1 :(得分:0)

您没有提及正在使用的数据库,但是对于PostgreSQL,您可以将array_agg函数与group by一起使用,如下所示:

SELECT "A", "B", array_agg("C") AS C
FROM Table1
GROUP BY 1,2;

SQLFIDDLE中查看PostgreSQL的解决方案

或者对于mysql,您可以使用group_concat,如下所示:

SELECT A, B, group_concat(C) AS C
FROM Table1
GROUP BY 1,2;

SQLFIDDLE中检查MySQL的解决方案

希望有帮助。