当前位置: 首页 > 面试题库 >

如何在SQLite中转置表格?

夹谷浩博
2023-03-14
问题内容

您好,所以我在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

我想对表进行转置,因此每行只有一个 用户。 列标题为 “ Group” 。“组”的值将是第一张表的 “角色” 列中的值。

因此,转换后的外观如下:

   User    |    A        |    B       |  C 
John Smith |   admin     |    user    |
Jane Doe   |   user      |    limit   | admin
Jack Brown |   admin,user|            |

一个人如何去做这个SQLite?


问题答案:

您可以使用row_number()&进行聚合:

select User, 
       max(case when seq = 1 then role end) as a,
       max(case when seq = 2 then role end) as b,
       max(case when seq = 3 then role end) as c
from (select t.*,
             row_number() over (partition by User order by group) as seq
      from table t
     ) t
group by User;


 类似资料:
  • 本文向大家介绍如何在Android sqlite中删除表?,包括了如何在Android sqlite中删除表?的使用技巧和注意事项,需要的朋友参考一下 在进入示例之前,我们应该知道android中的sqlite数据库是什么。SQLite是一个开放源代码SQL数据库,可将数据存储到设备上的文本文件中。Android内置了内置的SQLite数据库实现。SQLite支持所有关系数据库功能。为了访问该数据

  • 问题内容: 我有以下ArrayList, 我想这样转换 我对这种方法感到困惑。任何提示将不胜感激。 谢谢。 问题答案: 这称为换位。以下代码片段可以满足您的需求: 也可以看看 维基百科/转置

  • 问题内容: 在MySQL中,我会使用 但这会导致SQLite错误。SQLite的正确语法是什么? 问题答案: 在此之前,已经回答了这一问题:是否可以一次在SQLite数据库中插入多行? 要回答您对OMG Ponies的评论,请回答: 从3.7.11版本开始,SQLite确实支持多行插入。理查德·希普(Richard Hipp)评论:

  • 多线程。在这种模式下,SQLite可以安全地由多个线程使用,前提是在两个或多个线程中不同时使用单个数据库连接。 序列化。在序列化模式下,SQLite可以安全地由多个线程使用,不受限制。

  • 我将calendar.getTimeinMilliseconds()中的日期存储在SQLite DB中。我需要在SELECT语句中标记每个月的第一行,所以我只需要使用SQLite函数将时间以毫秒为单位转换为任何日期格式。我怎样才能避免这个?

  • 我正在尝试导出一些SQLite表数据。我正在获取IOException:/TestFileExport0719a.csv:open失败:EROFS(只读文件系统) 更改后出现以下错误: File outFile=新文件(environment.getExternalStoragePublicDirectory(environment.directory_downloads),outFileName