有没有可能做一些类似于group_concat的事情,只是不是将值组合成一个逗号分隔的字符串,而是将它们扩展到表中的多个列中?最初,我计划group_concat值,然后对字符串进行拆分,将值移动到我需要的列中,但显然SQLite中没有split选项,我只能直接在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?
1条答案
按热度按时间krcsximq1#
你需要在你的表中有自动递增id来实现这一点
SQLLite没有row_number解析函数,没有
pivot
关键字在这里,我们使用相关子查询生成row_number,并基于此选择每个Item,System的5个所有者。
字符串