连接sqlite中未知数量的值

2024-01-15

我正在使用 sqlite 3.15.1 。

我有一张桌子master包含大学的主时间表。

看起来像 :

day         sem         sec         hour        sub_id    
----------  ----------  ----------  ----------  ----------   
MON         5           B           4           10IS51 
MON         5           B           4           10IS53   
MON         5           B           5           10CS54    
MON         5           B           6           10CS55    
MON         5           B           7           10CS53    
MON         3           A           1           10CS33   

还有更多的价值观......

相同的其他值有多个 sub_id,意思是 - 在周一第一个小时,5th B 学生可能有 2 个或更多实验室 (sub_id)。 (分批进行)。

为了获得正确的时间表,我正在这样做:

select day,
max( case when hour =1 then sub_id end ) as 'hour-1',
max( case when hour =2 then sub_id end ) as 'hour-2',
max( case when hour =3 then sub_id end ) as 'hour-3',
max( case when hour =4 then sub_id end ) as 'hour-4',
max( case when hour =5 then sub_id end ) as 'hour-5',
max( case when hour =6 then sub_id end ) as 'hour-6',
max( case when hour =7 then sub_id end ) as 'hour-7',
max( case when hour =8 then sub_id end ) as 'hour-8'
from master
where sem=5 and sec='B'
group by day
order by day;

但当出现多个值时,它只给出一个值,即max()价值。当我使用min(),我得到了 min() 值。我怎样才能两者兼得?

结果视图如下所示:

day         hour-1      hour-2      hour-3      hour-4      hour-5      hour-6      hour-7      hour-8    
----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------
FRI         10CS52      10CS54      10CS53      10CS55      HRD         HRD         TUT                   
MON         10CSL58     10CSL58     10CSL58     10IS51      10CS54      10CS55      10CS53                
SAT         10IS51      10CS55      10CS56      10CS52                                                    
THU         10CS53      10IS51      10CS54      10CS52                                                    
TUE         10CS54      10CS52      10CS56      10CS56                                                    
WED         10CS56      10IS51      10CS53      10CS55      CSA         CSA         CSA                   

但我想要这样的东西:

day         hour-1           hour-2          hour-3      hour-4      hour-5      hour-6      hour-7      hour-8    
----------  ----------      ----------       ----------  ----------  ----------  ----------  ----------  ----------
FRI         10CS52,10CS53   10CS54           10CS53      10CS55      HRD         HRD         TUT                   
MON         10CSL58         10CSL58,10CSL33  10CSL58     10IS51      10CS54      10CS55      10CS53                
SAT         10IS51,10IS48   10CS55           10CS56      10CS52                                                    
THU         10CS53          10IS51           10CS54      10CS52                                                    
TUE         10CS54          10CS52           10CS56      10CS56                                                    
WED         10CS56          10IS51           10CS53      10CS55      CSA         CSA         CSA   

也就是说,所有类 - 逗号分隔,而不是 min() 或 max()。

有可能实现这一目标吗?请帮我。

Thanks.


将 MIN/MAX 替换为 GROUP_CONCAT

select day,
group_concat( case when hour =1 then sub_id end ) as 'hour-1',
group_concat( case when hour =2 then sub_id end ) as 'hour-2',
group_concat( case when hour =3 then sub_id end ) as 'hour-3',
group_concat( case when hour =4 then sub_id end ) as 'hour-4',
group_concat( case when hour =5 then sub_id end ) as 'hour-5',
group_concat( case when hour =6 then sub_id end ) as 'hour-6',
group_concat( case when hour =7 then sub_id end ) as 'hour-7',
group_concat( case when hour =8 then sub_id end ) as 'hour-8'
from master
where sem=5 and sec='B'
group by day
order by day;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

连接sqlite中未知数量的值 的相关文章

  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • SPARK SQL - 当时的情况

    我是 SPARK SQL 的新手 SPARK SQL 中是否有相当于 CASE WHEN CONDITION THEN 0 ELSE 1 END 的内容 select case when 1 1 then 1 else 0 end from
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • 将 Android 应用程序从 Lite 升级到 Pro 版本时保持相同的 SQLite 数据库

    首先 我已经进行了搜索 但找不到我的问题的具体答案 所以这里是 我正在编写我的第一个 Android 应用程序 并计划拥有 Lite 版本 有限功能 和付费版本 完整功能 Lite 和 Pro 版本将使用相同的 SQLite 数据库结构 如
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • 如何在使用连接池时强制 SqlConnection 物理关闭?

    我明白 如果我实例化一个 SqlConnection 对象 我实际上是从连接池中获取一个连接 当我调用 Open 时 它将打开连接 如果我对该 SqlConnection 对象调用 Close 或 Dispose 方法 它将返回到连接池 但
  • 如何在 Visual Studio 中更改 Azure 数据库表的列顺序

    我整个下午都在寻找在 MS Visual Studio 2022 中重新排序 Azure 数据库表列的方法 没有运气 在其他应用程序中 可以通过拖动或剪切和粘贴轻松重新排列列 这里无能为力 此时 我什至不确定可以在 VS 中移动列 我只对
  • 插入触发器最终在分区表中插入重复行

    我有一个分区表 我认为 适当的INSERT触发器和一些限制 不知何故 INSERT语句为每个语句插入 2 行INSERT 一个用于父分区 一个用于相应的分区 设置简要如下 CREATE TABLE foo id SERIAL NOT NUL
  • 使用 SQLITE 按最近的纬度和经度坐标排序

    我必须获得一个 SQLite SQL 语句 以便在给定初始位置的情况下按最近的纬度和经度坐标进行排序 这是我在 sqlite 数据库中的表的例句 SELECT id name lat lng FROM items EXAMPLE RESUL
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • 使用 where 进行 select 语句时,HSQLDB 用户缺乏权限或未找到对象错误

    我的数据库使用 SQuirrel SQL 客户端版本 3 5 3 和 HSQLDB 我已经能够为其指定相应的驱动程序 内存中 并创建一个别名 我创建了一个表 CREATE TABLE ENTRY NAME VARCHAR 100 NOT N
  • 尝试将 SQLite DB 从数据复制到 SD 卡

    我正在使用以下代码 该代码发布在 Stack Overflow 上的某个位置 并根据我的目的进行了修改 try File sd Environment getExternalStorageDirectory File data Enviro
  • Android - 在sqlite数据库中存储敏感数据

    我需要将敏感数据存储在 Android 应用程序的 sqlite 数据库中 我如何确定这些数据非常安全 我知道我可以使用密钥加密数据 但是我将该密钥存储在哪里 我也不想要求用户填写密钥 我只是希望它能够自行工作 因为我害怕逆向工程 所以我也
  • SELECT 语句会受到 SQL 注入攻击吗?

    实际上有2个问题 我知道我必须尽可能多地使用存储过程 但我想知道以下内容 A 我可以从 SELECT 语句 例如 Select from MyTable 获得 SQL 注入攻击吗 B 另外 当我在 ASP NET 中使用 SQLDataSo
  • 月份增量查询

    我想通过添加 1 个月来更新数据库中的月份 但我不知道如何在以下存储过程查询中添加月份 我不擅长 sql 请检查它 ALTER PROCEDURE dbo ChangePassword password varchar 20 epasswo
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 使用间隔阈值对不同的连续时间戳记录进行分组

    我有一系列间歇性间隔的带有时间戳的 GPS 坐标 我正在使用 PostGIS 将它们渲染到地图画布上 为了渲染它们 需要使用 PostGIS 中的 ST MakeLine 聚合函数将点聚合成线 从而在地图上留下 GPS 数据丢失的间隙 数据
  • 在 postgres 查询中使用列表

    我有一个动态列表 list a b c d 所以长度可能会改变 我想在查询中比较这些列表值 select from student where name in all the list values 我想将列表值传递到此查询中 我怎样才能做
  • SQL Server 上的语法错误

    这可能是一个愚蠢的语法错误 但我只是继续阅读我的程序 但我无法弄清楚我的错误在哪里 消息 156 第 15 级 状态 1 第 41 行关键字附近的语法不正确 为了 这是我的代码 alter procedure LockReservation
  • iphone sqlite 静态链接?

    有人静态链接 sqlite 而不是使用动态链接 吗 我遇到的问题是 越狱手机的用户没有与普通 iPhone 所采用的 sqlite 版本相同的版本 因此导致崩溃 我假设在我的应用程序中静态链接已知版本的 sqlite 就是答案 我需要全文支

随机推荐

  • 从 DMA 地址 (dma_addr_t) 获取 PFN?

    我想获取与分配的内存块关联的 PFNdma alloc coherent与 PCIe 设备一起使用 如下所示 unsigned long pfn buffer dma alloc coherent pcie gt dev size bus
  • Google Sheets 脚本 – 输出单元格背景颜色的函数

    我想在 Google 脚本中编写自己的函数 可以在 Google Sheets 中使用它来获取单元格的背景颜色 我们将该函数称为 SETBACKGROUNDCOLOR 我希望能够将单元格引用 以 A1 表示法 作为参数传递 例如如果我调用
  • 如何使用node js杀死进程

    我正在运行使用 IE chrome 和 firefox 驱动程序的 BDD 测试 有时 当我的测试失败时 它不会杀死驱动程序 因此它会继续运行 我想用进程名称杀死所有进程 在Windows中是这样的 taskkill F IM chrome
  • clojure 从字符串名称解析函数

    在 clojure 1 2RC1 中 我希望根据其名称作为字符串获取一个函数并对其进行评估 函数定义 ns my ns defn mycar x first x 以下工作有效 ns resolve ns symbol mycar 3 4 i
  • 为什么 boost::filesystem 中止而不是抛出异常?

    我正在将一些代码从 VS2010 使用 boost 1 55 迁移到 VS 2015 使用 boost 1 60 我最终得到了 Microsoft Visual C Runtime Library 的报告abort has been cal
  • 如何将 FieldValue.serverTimestamp() 转换为 Kotlin/Java 日期类

    我想保存在 Firestore 中创建帖子的日期 但我不想使用系统时间 相反 为了准确性 我想使用服务器时间戳 所以我正在使用FieldValue serverTimestamp 获取服务器时间戳 但保存它的变量的数据类型是日期 那么我该如
  • 有没有办法自动更新symfony2中的AppKernel?

    也许类似于generate bundle命令 生成包后提示更新AppKernel 或Composer 使用您安装的依赖项更新自动加载 我想要获得与generate bundle类似的功能 但我不想创建新的bundle 而是想添加刚刚下载的b
  • Azure 功能应用程序未显示在 Azure 门户中

    Azure 函数已从终端成功部署 部署过程中不涉及 CI CD 我正在将 http 触发器与 python 一起使用 我确实看到了init py function json host json在应用程序文件中 但是 这些函数未在 Azure
  • 如何在 C# 中正确处理空白、空行或空行

    我有一些正在处理文本文件的 C 代码 但我似乎无法让它在空白或空 空白 行中正常工作 My code while file EndOfStream line file ReadLine bool isComment line 0 line
  • Python 3 中有“foreach”函数吗?

    当我遇到可以用javascript完成的情况时 我总是想是否有一个foreach功能的话会很方便 我所说的 foreach 是指下面描述的函数 def foreach fn iterable for x in iterable fn x 他
  • Node Sass 尚不支持您当前的环境:Windows 64 位且运行时不受支持 (88)

    我已经尝试安装gulp sass最新版本与npm i gulp sass save dev一开始我遇到了很多错误 但后来解决了 但每当我尝试运行 gulp 时 我都会收到此错误 Error Node Sass does not yet su
  • 如何解决“请求的 URL 被拒绝。请咨询您的管理员。”错误?

    我有一个 ASP 应用程序 单击特定链接时 会执行一些 VB 脚本并显示 ASP 页面 但我得到的屏幕显示 信息不可用 请求的 URL 被拒绝 请咨询您的管理员 您的支持 ID 是 XXXXXXXXXXXXXXXXXXXXXX IIS 和事
  • UPS 测试追踪号码(有这样的东西吗?)

    我终于让 UPS 跟踪 API 正常工作了 或者至少我认为我是这样的 它给我一个 无效的跟踪号码 响应 我现在的问题是我没有要跟踪的包裹 有谁知道有什么资源可以让我测试来自 UPS 的虚假订单 或者有什么可以给出回应的资源 谢谢 我正在使用
  • 使用 Excel VBA 创建包含具有特定值的行的 Outlook 电子邮件正文

    我使用了一个示例来创建代码 使用 按钮 在我的文件中为红色 从 Excel 使用 Outlook 发送电子邮件 该代码有效 有一个预选的行范围 B1 K20 可以手动修改 这要归功于应用程序 输入框功能 Sub MAIL Dim rng A
  • Jenkins 运行并行脚本

    我是詹金斯的新手 需要一些帮助 我有 4 个 shell 脚本 test1 sh test2 sh test3 sh 和 test4 sh 我希望 test2 sh 仅在 test1 sh 成功运行时运行 而 test4 sh 仅在 tes
  • 如何使用点符号(如方括号符号)中的变量

    我一直在 Javascript 中使用方括号表示法来创建和调用关联数组 在这个例子中 我理解方括号表示法允许您使用变量来调用数组中的某个对象 你会如何用点表示法来做这样的事情 var item item 1 pen var x 1 cons
  • 如何选择BigQuery表中最新的分区?

    我尝试从日期分区 BigQuery 表中的最新分区中选择数据 但查询仍然从整个表中读取数据 我已经尝试过 据我所知 BigQuery不支持QUALIFY SELECT col FROM table WHERE PARTITIONTIME S
  • 如何限制ListView中列表项的显示

    我从 url 获取 XML 数据并使用自定义列表适配器在ListView 我只需要显示 10 个项目ListView 我怎样才能做到这一点 请告诉我 Thanks 适配器中仅放入 10 件物品 或者覆盖getCount 并返回10
  • Camera.PictureCallback 拍照后停止预览

    使用具有 Android API 16 的设备拍照后 预览停止工作 但当我使用具有 Android API 22 的设备时 应用程序工作正常 我有这个拍照代码 private Camera PictureCallback mPicture
  • 连接sqlite中未知数量的值

    我正在使用 sqlite 3 15 1 我有一张桌子master包含大学的主时间表 看起来像 day sem sec hour sub id MON 5 B 4 10IS51 MON 5 B 4 10IS53 MON 5 B 5 10CS5