我有一个包含一些出勤数据的表格。 我正在尝试制定一个具有不同用户的表,如果没有 NULL,则具有开始(MIN)和结束(MAX)。
我有“time_captured”的表
用户 | 开始 | 结束 |
---|---|---|
A | 0 | 60 |
A | 60 | 120 |
A | 700 | |
C | 120 | 180 |
C | 540 | 860 |
我想要的结果
用户 | 开始 | 结束 |
---|---|---|
A | 0 | |
C | 120 | 860 |
我尝试了下面的代码,但是结果不是我所期望的(显示原始表格)
SELECT
MIN(time_captured.start_time),
CASE
WHEN
time_captured.end_time IS NULL THEN NULL
ELSE
MAX(time_captured.end_time)
END,
time_captured.user_sign
FROM
time_captured
GROUP BY
time_captured.user_sign,
time_captured.end_time
用户 | 开始 | 结束 |
---|---|---|
A | 0 | 60 |
A | 60 | 120 |
A | 700 | |
C | 120 | 180 |
C | 540 | 860 |
如果
COUNT(*)
和COUNT(time_captured.end_time)
相同,则没有NULL值,即返回MAX()
值。 (否则返回 NULL。)
SELECT time_captured.user_sign
MIN(time_captured.start_time),
CASE WHEN COUNT(*) = COUNT(time_captured.end_time)
THEN MAX(time_captured.end_time)
END
FROM time_captured
GROUP BY time_captured.user_sign