当我使用查询时:
select MAX(DT_LOGDATE)
from UMS_LOGENTRY_DTL
where C_INPUTMODE='R' and VC_DEVICEID=10
表格给出了最大日期,但如果条件不满足,则返回一个NULL表格。所以会有一个空行。但我需要它作为空数据表。我如何删除noresult上的null?
答案 0 :(得分:11)
您可以使用HAVING子句:
SELECT MAX(DT_LOGDATE)
FROM UMS_LOGENTRY_DTL
WHERE C_INPUTMODE='R' and VC_DEVICEID=10
HAVING MAX(DT_LOGDATE) IS NOT NULL
答案 1 :(得分:4)
使用派生表并对其进行过滤:
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
答案 2 :(得分:3)
即使聚合空集,标量聚合也始终返回单行。
您也可以
SELECT MAX(DT_LOGDATE)
FROM UMS_LOGENTRY_DTL
WHERE C_INPUTMODE = 'R'
AND VC_DEVICEID = 10
GROUP BY ()
GROUP BY
子句使其成为vector aggregate rather than scalar,如果NULL
中没有与UMS_LOGENTRY_DTL
匹配的行,则不会返回WHERE
行。< / p>
答案 3 :(得分:1)
您可以将查询用作子查询并添加另一个条件:
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