sql - 根据条件选择包含在 group by 子句中的列以外的列
问题描述
我需要根据 , 对记录进行分组fkId
,DateFrom
但还需要选择TimeFrom
第一条记录和TimeTo
从第二条记录
pkID | fkID | DateFrom | TimeFrom | TimeTo
104 | 20 | 05-02-2019 00:00 | 12:00 | 23:59
105 | 20 | 06-02-2019 00:00 | 00:00 | 12:00
106 | 20 | 06-02-2019 00:00 | 12:00 | 23:59
107 | 20 | 07-02-2019 00:00 | 00:00 | 12:00
一般 GROUP BY 将不允许 TimeFrom 和 TimeTo 包含在选择查询中。
数据就是这样,日期为 1 行或 2 行,1 行表示仅上午或下午,2 行表示上午和下午。
SELECT fkID, DateFrom --, TimeFrom
FROM table
GROUP BY fkID, DateFrom
所以想要的输出是这样的:
fkID | DateFrom | TimeFrom | TimeTo
20 | 05-02-2019 00:00 | 12:00 | 23:59
20 | 06-02-2019 00:00 | 00:00 | 23:59
20 | 07-02-2019 00:00 | 00:00 | 12:00
因此对于 Date 06-02-2019 00:00
,将 dateFrom 和 DateTo 组合在一行中。
解决方案
如果对应于同一组的间隔没有间隙和重叠,那么您可以简单地使用GROUP BY
. 我假设TimeFrom
并且TimeTo
是Time
数据类型。
select fkID, dateFrom,
min(TimeFrom),
max(TimeTo)
from your_table
group by fkID, dateFrom
推荐阅读
- java - 拖动时:如何使视图不可见但拖动阴影不透明?
- python - 错误:安装 osmnx 的“python setup.py egg_info”失败,错误代码为 1”
- c# - 如何拥有一个包含两个模型的视图模型
- android - 无法在 Android Pie 上使用颤振声音插件播放音乐
- c - 如果 .sh 文件和 linux c 文件的路径不同,那么如何使用系统命令呢?看过一个回答。在stackoverflow上但不清楚
- r - R中的bin和转置
- python - 在背景上创建 python 图
- javascript - 函数结果只持续一毫秒
- swift - 创建没有任何持久数据的 NSPersistentContainer
- c# - C# HttpWebRequest 表单发布数据