如果有NULL如何显示NULL ELSE显示MAX值

问题描述 投票:0回答:1

我有一个包含一些出勤数据的表格。 我正在尝试制定一个具有不同用户的表,如果没有 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
sql null aggregate-functions
1个回答
3
投票

如果

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
© www.soinside.com 2019 - 2024. All rights reserved.