当我使用查询时:
select MAX(DT_LOGDATE)
from UMS_LOGENTRY_DTL
where C_INPUTMODE='R' and VC_DEVICEID=10
该表给出了最大日期,但如果不满足条件,则返回一个带有 NULL 的数据表。所以会有一个空行。但我需要它作为空数据表。如何在 noresult 上删除该空值?
当我使用查询时:
select MAX(DT_LOGDATE)
from UMS_LOGENTRY_DTL
where C_INPUTMODE='R' and VC_DEVICEID=10
该表给出了最大日期,但如果不满足条件,则返回一个带有 NULL 的数据表。所以会有一个空行。但我需要它作为空数据表。如何在 noresult 上删除该空值?
您可以使用 HAVING 子句:
SELECT MAX(DT_LOGDATE)
FROM UMS_LOGENTRY_DTL
WHERE C_INPUTMODE='R' and VC_DEVICEID=10
HAVING MAX(DT_LOGDATE) IS NOT NULL
使用派生表并对其进行过滤:
select *
from (
select MAX(DT_LOGDATE) as max_date
from UMS_LOGENTRY_DTL
where C_INPUTMODE='R'
and VC_DEVICEID=10
) t
where max_date is not null
即使聚合一个空集,标量聚合也总是返回单行。
你也可以做
SELECT MAX(DT_LOGDATE)
FROM UMS_LOGENTRY_DTL
WHERE C_INPUTMODE = 'R'
AND VC_DEVICEID = 10
GROUP BY ()
该GROUP BY
子句使其成为向量聚合而不是标量,如果没有匹配的NULL
行,则不会返回任何行。UMS_LOGENTRY_DTL
WHERE
您可以将查询用作子查询并添加另一个条件:
select max_date
from
(
select MAX(DT_LOGDATE) max_date
from UMS_LOGENTRY_DTL
where C_INPUTMODE='R' and VC_DEVICEID=10
) sub
where sub.max_date is not null