简体   繁体   English

将两行合并成一行mysql

[英]Merge two rows into one row mysql

this is my table schema 这是我的表架构

id | name | number | status | logtime | logdate
 1    John    1001     in     8:00 AM   10/01/2016
 2    John    1001     out    5:00 PM   10/01/2016
 3    Carl    1002     in     8:01 AM   10/01/2016
 4    John    1001     in     8:00 AM   10/02/2016
 5    John    1001     out    5:00 PM   10/02/2016

and how do i merge the two rows of the same logdate into one, looking like this as result 以及如何将同一日志日期的两行合并为一,结果如下

name | number | time_in | time_out | logdate
John    1001    8:00 AM   5:00 PM    10/01/2016
John    1001    8:00 AM   5:00 PM    10/02/2016
Carl    1002    8:01 AM     NULL     10/01/2016

i used CASE syntax on my query but the result isn't the same as a wanted to. 我在查询中使用了CASE语法,但结果与想要的结果不同。 Surely, there's something wrong with my query. 当然,我的查询有问题。 Here's my query btw: 这是我的查询顺便说一句:

SELECT
   number,
   name,
   CASE status WHEN 'in' THEN logtime END AS time_in,
   CASE status WHEN 'out' THEN logtime END AS time_out,
   LogDate
FROM
   tbl_attendanceraw
Group by logdate

TIA! TIA!

You want conditional aggregation: 您需要条件聚合:

SELECT number, name,
       MAX(CASE status WHEN 'in' THEN logtime END) AS time_in,
       MAX(CASE status WHEN 'out' THEN logtime END) AS time_out,
       LogDate
FROM tbl_attendanceraw
Group by logdate, number, name;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM