[英]SQL Select Max of Columns Where Date is Not Null
我当前正在使用此查询来选择一些数据: SELECT DISTINCT a.code AS code, name, max(scen.Is3D) AS Is3D FROM locations LEFT JOIN ...
该scen
表中的列Is3D
和Date
。 我只想选择日期IS NOT NULL
的项目的最大值。 我尝试了max(scen.Is3D WHERE scen.Date IS NOT NULL)
,但这没有用。 我无法在查询中的FROM
之后更改任何内容,因此,如果可能的话,我需要在MAX中进行过滤。 我正在使用MySQL 5.7。
您可以使用:
MAX(CASE WHEN scen.date IS NOT NULL THEN scen.Is3D END) AS Is3D
WHEN
不满足任何WHEN
条件时, CASE
表达式将返回NULL
,但是MAX()
忽略空值,因此这将仅返回所选行中Is3D
列的最大值。
因此,如果在FROM
之后不能更改任何内容,则无法在此处获得理想的解决方案。 由于您正在SELECT
NULL
值。 如果我们只能修改最终输出,我们可以尝试的一件事就是这样做。
SELECT MAX(ISNULL(scen.Date,0))...
这会将所有NULL
替换为0,但有助于准确了解您要执行的操作。 您为什么如此确信查询本身无法进行任何修改?
另一种解决方案是将整个查询放在另一个包装器中。
看起来像:
SELECT *
FROM (
[your whole query here]
) AS inner
WHERE inner.Date IS NOT NULL
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.