【发布时间】:2021-10-13 03:19:50
【问题描述】:
我有一个自己无法解决的问题。
我在 Mysql 中有下表(某些连接的结果),描述了所有事件
事件表:
| ID | Odl_ID | Evt_ID | Evt_Desc | Evt_Date | Link_1 | Link_2 | Start_Time | End_Time |
|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | Start | 2021-08-06 10:15:00 | Null | Null | 2021-08-06 10:15:00 | |
| 2 | 2 | 0 | Start | 2021-08-06 12:15:00 | Null | Null | 2021-08-06 12:18:00 | |
| 3 | 1 | 0 | Finish | 2021-08-06 14:15:00 | Null | Null | 2021-08-06 10:15:00 | 2021-08-06 14:15:00 |
| 4 | 1 | 0 | Generate PDF 1 | 2021-08-06 14:25:00 | C:\Path1 | Null | ||
| 5 | 1 | 0 | Generate PDF 2 | 2021-08-06 14:25:00 | Null | C:\Path2 | ||
| 6 | 2 | 0 | Finish | 2021-08-06 14:35:00 | Null | Null | 2021-08-06 10:18:00 | 2021-08-06 18:15:00 |
| 7 | 2 | 0 | Generate PDF 1 | 2021-08-06 18:25:00 | C:\Path3 | Null | ||
| 8 | 2 | 0 | Generate PDF 2 | 2021-08-06 18:25:00 | Null | C:\Path4 |
我想创建一个这样的视图,将 Odl_ID 分组并显示在不同行中找到的所有事件(如事件日期、Link_1 等)。
我要达到的结果表:
| ID | Odl_ID | Evt_Date | Link_1 | Link_2 | Start_Time | End_Time |
|---|---|---|---|---|---|---|
| 1 | 1 | 2021-08-06 10:15:00 | C:\Path1 | C:\Path2 | 2021-08-06 10:15:00 | 2021-08-06 14:15:00 |
| 2 | 2 | 2021-08-06 12:15:00 | C:\Path3 | C:\Path4 | 2021-08-06 12:18:00 | 2021-08-06 18:15:00 |
我该如何解决这个问题? 我不知道该怎么做,我尝试寻找数据透视表,但我还没有弄清楚问题所在。谢谢
【问题讨论】:
-
event_table 此表错误 - 存在同名列。为它们分配不同的名称。
-
如果您的数据与“具有相同 Odl_ID 的所有行的 Evt_Date、Start_Time、End_Time 的相同值”和“Link_1 (1) 和 Link_1 (2) 中只有一行包含一组包含一个值”,然后按 Evt_Date、Start_Time、End_Time 和 Odl_ID 分组,并为每个 Link_1 获取 MAX。
-
编辑第二列名称
-
@alessandro.todisco 根据您的示例数据包含 4 种类型的事件描述,例如开始、完成、gen pdf1、gen pdf2。如果缺少任何一个,那么那些 opl_id 信息将显示或不显示。
标签: mysql group-by pivot resultset