我有一个问题: 在我的SQLite(android上的sqlite3)数据库中,我有一个像这样的表 而且我想去 到目前为止我得到的是 这给了我一个字符串 虽然这已经很好了,但它仍然不是我想要的。 在那一点上,我无法理解我如何将事物结合起来以获得我想要的东西 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
是否可以执行类似于group_concat的操作,而不仅仅是将值组合成1个逗号分隔的字符串,而是将它们扩展到表的多个列中? 最初,我计划对值进行group_concat,然后对字符串进行拆分以将值移动到所需的列中,但是显然SQLite中没有拆分选项,而且我仅限于直接在SQLite中执行此操作(没有其他DB或脚本选项可用)。
生成下表需要生成的报告。
Item | Owner | System ---------------------- A | Bob | Sys1 B | Bob | Sys1 B | Sue | Sys1 B | Bob | Sys2 C | Bob | Sys3 C | Sue | Sys3 C | Jane | Sys3
我需要将其动态连接/旋转为这种格式。
Item | Owner 1 | Owner 2 | Owner 3 | Owner 4 | Owner 5 | System ---------------------------------------------------------------- A | Bob | | | | | Sys1 B | Bob | Sue | | | | Sys1 B | Bob | | | | | Sys2 C | Bob | Sue | Jane | | | Sys3
就“所有者”列而言,从技术上讲,每个项目最多不能超过5个所有者,即使超过5个,只要显示至少5个,我都不在乎显示其他所有者向上(此场景中的5个也无关紧要)。
表格中“项目”的数量是无限的,并且大约有20个系统(尽管系统数量会发生变化)
仅使用SQlite可以吗?
您需要在表中具有自动增量ID才能实现此目的
SQLLite没有row_number分析功能,没有pivot
关键字
在这里,我们使用相关的子查询并根据此选择为每个项System生成5个所有者,从而生成row_number。
select Item,System,
max( case when rn =1 then Owner end ) as Owner1,
max( case when rn =2 then Owner end ) as Owner2,
max( case when rn =3 then Owner end ) as Owner3,
max( case when rn =4 then Owner end ) as Owner4,
max( case when rn =5 then Owner end ) as Owner5
from (
select Item, System, Owner,
(select count(*) from Table1 b where a.Item = b.Item and a.System = b.System
and a.id >= b.id) as rn
from Table1 a) T
group by Item,System
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.