我是SQL新手。
我的表格如下:
EMP_NUMBER ATTDATE ATTTIME
00001 01-05-2018 9:00
00001 01-05-2018 18:00
00001 02-05-2018 8:00
00001 02-05-2018 20:00
现在我希望SQL查询使用上面的表日期来创建表,格式如下:
EMP_NUMBER ATTDATE ATTINTIME ATTOUTTIME
00001 01-05-2018 9:00 18:00
00001 02-05-2018 8:00 20:00
一个简单的GROUP BY
查询应该在这里工作:
SELECT
EMP_NUMBER,
ATTDATE,
MIN(ATTTIME) AS ATTINTIME,
MAX(ATTTIME) AS ATTOUTTIME
FROM yourTable
GROUP BY
EMP_NUMBER,
ATTDATE;
注意:此答案假定您的日期和时间信息位于实际datetime
和time
列中。 如果没有,那么您将直接处理文本,并且它不会正确排序。 作为临时补救措施,您可以使用STR_TO_DATE
. 例如,您可以使用以下命令将ATTTIME
列转换为适当的时间:
STR_TO_DATE(ATTTIME, '%H:%i')