gpt4 book ai didi

mysql - 查看来自单独行的是/否信息分组为两列的单行

转载 作者:行者123 更新时间:2023-11-29 06:34:28 24 4
gpt4 key购买 nike

我有一个包含员工轮类数据的表。每行保存员工 ID 号,无论他们是上类还是下类,以及操作的相应日期时间。表移位:

+-----+------------+--------+---------------------+
| id | employeeid | action | timestamp |
+-----+------------+--------+---------------------+
| 99 | 76 | in | 2019-01-25 12:20:43 |
| 100 | 76 | out | 2019-01-25 22:17:22 |
| 102 | 76 | in | 2019-01-26 10:38:14 |
| 104 | 76 | out | 2019-01-26 17:00:26 |
| 105 | 76 | in | 2019-01-27 11:45:35 |
| 106 | 76 | out | 2019-01-27 14:48:27 |
| 110 | 76 | in | 2019-01-27 17:33:15 |
| 117 | 76 | out | 2019-01-28 02:16:21 |
+-----+------------+--------+---------------------+
  • 给定员工在同一日期可以有多个类次
  • 轮类可能会从一天持续到下一天
  • action 列中的条目始终按inout 顺序

我需要创建一个 View ,其中每个类次都表示为一行,如下所示:

+------------+---------------------+---------------------+
| employeeid | in | out |
+------------+---------------------+---------------------+
| 76 | 2019-01-25 12:20:43 | 2019-01-25 22:17:22 |
| 76 | 2019-01-26 10:38:14 | 2019-01-26 17:00:26 |
| 76 | 2019-01-27 11:45:35 | 2019-01-27 14:48:27 |
| 76 | 2019-01-27 17:33:15 | 2019-01-28 02:16:21 |
+------------+---------------------+---------------------+

如果员工的最后一个操作是in,则out 应为NULL

我读过一些将数据从行到列组合起来的帖子,但找不到任何处理类似二进制情况的内容。

有人能给我指出正确的方向吗?谢谢。

最佳答案

前面的答案看起来不错,但我想知道一天两类,或者跨越多天的轮类,并且认为身份可能很重要。

我假设 id 列是一个始终升序的整数主键。

我假设没有人可以在没有先 checkin 的情况下 checkout 。

如果有人 checkin 但未 checkout ,我假设您希望“out”为 NULL。

我假设时间戳不是保留字,并且表名 = 移位。

尝试:

SELECT employeeid,
timestamp AS "in",
(SELECT MIN(s3.timestamp) FROM shifts s3
WHERE s3.employeeid = s1.employeeid
AND s3.action='out' AND s3.id > s1.id) AS "out"
FROM shifts s1 WHERE action='in';

关于mysql - 查看来自单独行的是/否信息分组为两列的单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54538042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com