你好,我在 SQlite 中有一个这样的表:
User | Group | Role
John Smith | A | admin
John Smith | B | user
Jane Doe | A | user
Jane Doe | B | limit
Jane Doe | C | admin
Jack Brown | A | admin, user
我想调换表格,这样就只有一个user每行。列标题是"Group"。 “组”的值将是以下值"Role"第一个表中的列。
所以,转换后它看起来像这样:
User | A | B | C
John Smith | admin | user |
Jane Doe | user | limit | admin
Jack Brown | admin,user| |
如何去做这个 SQLite 呢?
@CPerkins 提供的优秀解决方案存在丢失信息的潜在缺点。例如,考虑一下如果“Jack Brown”的数据呈现在两行中会发生什么:
Jack Brown | A | admin
Jack Brown | A | user
为了确保没有信息丢失,可以使用 GROUP_CONCAT 而不是 MAX:
SELECT User,
GROUP_CONCAT(CASE WHEN "group" == 'A' THEN role END) as A,
GROUP_CONCAT(CASE WHEN "group" == 'B' THEN role END) as B,
GROUP_CONCAT(CASE WHEN "group" == 'C' THEN role END) as C
FROM SO52961250 t
GROUP BY User;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)