如何将1个表中的2个值连接到1行中?

时间:2018-12-27 03:26:52

标签: mysql sql

我有一个名为log_attendance的表

enter image description here

所需的输出:

enter image description here

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

一种简单的方法是使用GROUP BY列中的emp_id子句,然后使用聚合方法MAX()MIN()获得所需的结果。请注意,要映射到NULL值,您将需要进行额外的检查,例如:

SELECT
    emp_id,
    MIN(tap_in) AS tap_in,
    IF(MIN(tap_in) = MAX(tap_in), NULL, MAX(tap_in)) AS tap_out
FROM
    log_attendance
GROUP BY
    emp_id

您也可以在这里进行检查:DB-Fiddle

答案 1 :(得分:0)

您可能必须将GROUP BYMINMAX函数结合使用才能达到要求。

SELECT emp_id,
       MIN(tap_in) AS tap_in,
       MAX(tap_in) tap_out
FROM TABLE
GROUP BY emp_id

答案 2 :(得分:-1)

请参见以下简单查询

SELECT empid,
   min([tap In]) [tap In] ,CASE WHEN  min([tap In])= max([tap In]) THEN NULL ELSE max([tap In]) END [tap out] 
FROM
    log_attendance 
 GROUP BY empid