sách gpt4 ai đã đi

sql - 如何在 MIN 或 MAX 中包含空值?

In lại 作者:行者123 更新时间:2023-12-01 17:40:46 28 4
mua khóa gpt4 Nike

我有一个表,用于存储时间跨度数据。该表的架构类似于:

ID INT NOT NULL IDENTITY(1,1)   
RecordID INT NOT NULL
StartDate DATE NOT NULL
EndDate DATE NULL

我正在尝试计算每个记录 ID 的开始日期和结束日期,即最小 StartDate 和最大 EndDate。 StartDate 不可为空,因此我不需要担心这一点,但我需要 MAX(EndDate) 来表示这是当前正在运行的时间跨度。

维护 EndDate 的 NULL 值并将其视为最大值非常重要。

最简单的尝试(如下)不起作用,突出显示 MIN 和 MAX 将忽略 NULL 的问题(来源:http://technet.microsoft.com/en-us/library/ms179916.aspx).

SELECT recordid, MIN(startdate), MAX(enddate) FROM tmp GROUP BY recordid

我已经创建了一个 SQL Fiddle,并完成了基本设置。

http://sqlfiddle.com/#!3/b0a75

我怎样才能让 SQL Server 2008 屈服于我的意愿,从 SQLFiddle 中给出的数据产生以下结果?

RecordId Start End  
1 2009-06-19 NULL
2 2012-05-06 NULL
3 2013-01-25 NULL
4 2004-05-06 2009-12-01

1 Câu trả lời

这有点难看,但因为 VÔ GIÁ TRỊ 对您来说有特殊的意义,这是我能想到的最简洁的方法:

SELECT recordid, MIN(startdate),
CASE WHEN MAX(CASE WHEN enddate IS NULL THEN 1 ELSE 0 END) = 0
THEN MAX(enddate)
END
FROM tmp GROUP BY recordid

也就是说,如果任何行有 VÔ GIÁ TRỊ,我们希望强制将其作为答案。仅当没有行包含 VÔ GIÁ TRỊ 时,我们才应返回 MIN(或 MAX).

关于sql - 如何在 MIN 或 MAX 中包含空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21286215/

28 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com