Mysql-日期从行到列
我想我需要一点帮助。。。这是一个时钟。每天需要将行转换为列。下面是一个示例表和我试图得到的结果 需要考虑的其他问题:Mysql-日期从行到列,mysql,Mysql,我想我需要一点帮助。。。这是一个时钟。每天需要将行转换为列。下面是一个示例表和我试图得到的结果 需要考虑的其他问题: -有时人们会忘记打卡 -有时,人们可能会在同一天多次打卡进出 这是我的桌子: 表A +-------+-----------+-----------------------+---------+ | ID | User_id | DateTime | inorout | +-------+-----------+----------------
-有时人们会忘记打卡
-有时,人们可能会在同一天多次打卡进出
这是我的桌子: 表A
+-------+-----------+-----------------------+---------+
| ID | User_id | DateTime | inorout |
+-------+-----------+-----------------------+---------+
| 1 | 5 | 2014-07-10 12:50:00 | 1 |
| 2 | 5 | 2014-07-10 17:40:00 | 0 |
| 3 | 5 | 2014-07-11 01:40:00 | 1 |
| 4 | 5 | 2014-07-11 02:50:00 | 0 |
| 5 | 5 | 2014-07-12 03:20:00 | 1 |
+-------+-----------+-----------------------+---------+
1代表输入,0代表输出
这就是我想要得到的结果:
--用户_id 5的结果
ID In Out Hours worked
1 2014-07-10 12:50:00 2014-07-10 17:55:00 5:05
2 2014-07-11 01:40:00 2014-07-11 02:50:00 1:10
3 2014-07-12 03:20:00 NULL NULL
谢谢大家! 我相信这会满足你的需求。。。基本上你想在桌子上使用一个轴,但是有一种方法可以在不使用轴的情况下实现这一点!!像这样
SELECT
id,
Login,
Logout,
TIMESTAMPDIFF(MINUTE, Login, Logout) / 60 as 'Hours Worked'
FROM(
SELECT id,
MAX(IF(inorout = 1, DateTime, NULL)) AS Login,
MAX(IF(inorout = 0, DateTime, NULL)) AS Logout
FROM table_name
GROUP BY DATE(DateTime)
) AS temp;
在日期上使用MAX()聚合是一种模拟表上轴心的方法,可以将两行(登录和注销)转换为两列。希望有帮助!:)
编辑:
您的数据与预期结果不匹配。。。即
登录2014-07-10 12:50:00和注销2014-07-10 17:40:00。。10号的注销时间不是你发布的预期结果。。。然而,这个查询完成了您想要的 你需要什么帮助?您没有显示任何代码。我的问题是我有一个表,我正在尝试得到那个结果。我没有发布任何代码,因为几个小时后我没有取得任何进展。我不明白反对票,我的问题出了什么问题?@scottpaterson你看过我的帖子了吗?0是注销。。1是登录名。