簡體   English   中英

SQL選擇日期不為空的最大列數

[英]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表中的列Is3DDate 我只想選擇日期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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM