使用MAX()生成的結果中取出空值當我使用查詢:從查詢SQL
select MAX(DT_LOGDATE)
from UMS_LOGENTRY_DTL
where C_INPUTMODE='R' and VC_DEVICEID=10
的表給出了最大日期,但如果條件不成立則返回一個數據表與NULL。所以會有一個空行。但我需要它作爲空數據表。我如何刪除noresult上的null?
使用MAX()生成的結果中取出空值當我使用查詢:從查詢SQL
select MAX(DT_LOGDATE)
from UMS_LOGENTRY_DTL
where C_INPUTMODE='R' and VC_DEVICEID=10
的表給出了最大日期,但如果條件不成立則返回一個數據表與NULL。所以會有一個空行。但我需要它作爲空數據表。我如何刪除noresult上的null?
您可以使用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 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
謝謝。工作 –
使用上派生表和過濾:
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
謝謝..工作精細 –
我只是好奇,爲什麼你想寫在()而不是添加where語句? –
@ Y.Z .:因爲你不能直接在'where'子句中引用別名。出於語法原因,派生表是必需的。 –
即使聚合一個空集,標量聚合總是返回單個行。
你也可以做
SELECT MAX(DT_LOGDATE)
FROM UMS_LOGENTRY_DTL
WHERE C_INPUTMODE = 'R'
AND VC_DEVICEID = 10
GROUP BY()
的GROUP BY
條款使得它是否有UMS_LOGENTRY_DTL
沒有行匹配WHERE
一個vector aggregate rather than scalar沒有NULL
一行將被退回。
這是一個很好的,我沒有想到這一點。 –