簡體   English   中英

如果選擇所有列,如何將DISTINCT子句和MIN函數應用於WHERE語句?

[英]How to apply DISTINCT clause and MIN function to WHERE statement if you are selecting all the column?

我需要你的幫助。 我想顯示可以使用DISTINCT子句和MIN函數的表上的所有列。

--Here is a sample code that I've tried but failed to show the expected output
SELECT * FROM TABLE  
WHERE DOCUMENT_NUMBER IN ( 
                            SELECT DISTINCT DOCUMENT_NUMBER 
                              FROM TABLE

                                          ) 
and DESIRED_DUE_DATE IN (
                          SELECT MIN(DESIRED_DUE_DATE)
                            FROM TABLE
                              GROUP BY DOCUMENT_NUMBER)
order by DOCUMENT_NUMBER desc;

預期的輸出應該是DOCUMENT_NUMBER全部不同,或者沒有重復,並且所有不同DOCUMENT_NUMBERDESIRED_DUE_DATE為最小值,同時顯示表中的所有列。

上面的代碼仍然向我顯示重復的Document_Number

比較簡單:

SELECT DOCUMENT_NUMBER, MIN(DESIRED_DUE_DATE) DESIRED_DUE_DATE
FROM TABLE
GROUP BY DOCUMENT_NUMBER
ORDER BY DOCUMENT_NUMBER desc;

GROUP BY返回DOCUMENT_NUMBER不同值。
如果要表的所有列:

SELECT t.* 
FROM TABLE t INNER JOIN (
    SELECT DOCUMENT_NUMBER, MIN(DESIRED_DUE_DATE) DESIRED_DUE_DATE
    FROM TABLE
    GROUP BY DOCUMENT_NUMBER
) g on g.DOCUMENT_NUMBER = t.DOCUMENT_NUMBER AND g.DESIRED_DUE_DATE = t.DESIRED_DUE_DATE    
ORDER BY t.DOCUMENT_NUMBER desc;

您的第一個條件是不必要的。

您的第二個將使用相關子句而不是group by

SELECT t.*
FROM TABLE t
WHERE t.DESIRED_DUE_DATE = (SELECT MIN(t2.DESIRED_DUE_DATE)
                            FROM TABLE t2
                            WHERE t2.DOCUMENT_NUMBER = t.DOCUMENT_NUMBER
                           )
order by t.DOCUMENT_NUMBER desc;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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