sqlite3 - 将多行和多列合并为一列而不重复

时间:2013-11-06 15:50:35

标签: sql sqlite

我有一个问题:

在我的SQLite(android上的sqlite3)数据库中,我有一个像这样的表:

idImp  | cer  | caus
---------------------
id1    | 010  | D1
id1    | 010  | D2
id1    | 011  | D2
id1    | 011  | D3
id2    | 010  | D1
id2    | 010  | D2
id2    | 011  | D2
id2    | 011  | D4

我想去

idImp | Conc
id1   | '010-D1-D2;011-D2-D3;'
id2   | '010-D1-D2;011-D2-D4;'

使用SQLite有可能吗?有没有人知道如何使这项工作?

谢谢!

编辑(SRY,结果表中有错误):

我需要的是一个SQL查询,它将字段“caus”和字段“cer”连接到由“idImp”分组的特定分隔符。

我在sqlite group_concat(X,Y)的文档中发现它可以在单列上工作,因为它为我提供服务,但我需要连接多个列,我不知道该怎么办...

1 个答案:

答案 0 :(得分:8)

分两步分组:

SELECT idImp,
       group_concat(causConc, '') AS Conc
FROM (SELECT idImp,
             cer || '-' || group_concat(caus, '-') || ';' AS causConc
      FROM MyTable
      GROUP BY idImp,
               cer)
GROUP BY idImp