[英]How to apply DISTINCT clause and MIN function to WHERE statement if you are selecting all the column?
I need your help. 我需要你的帮助。 I want to show all the column on a table where I can use DISTINCT clause and MIN function.
我想显示可以使用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;
Expected output should be the DOCUMENT_NUMBER are all distinct or rather no duplicate and the DESIRED_DUE_DATE of all distinct DOCUMENT_NUMBER is at minimum value while showing all the column on the table. 预期的输出应该是DOCUMENT_NUMBER全部不同,或者没有重复,并且所有不同DOCUMENT_NUMBER的DESIRED_DUE_DATE为最小值,同时显示表中的所有列。
the above code is still showing me duplicate Document_Number . 上面的代码仍然向我显示重复的Document_Number 。
It is simpler: 比较简单:
SELECT DOCUMENT_NUMBER, MIN(DESIRED_DUE_DATE) DESIRED_DUE_DATE
FROM TABLE
GROUP BY DOCUMENT_NUMBER
ORDER BY DOCUMENT_NUMBER desc;
GROUP BY
returns distinct values of DOCUMENT_NUMBER
. GROUP BY
返回DOCUMENT_NUMBER
不同值。
If you want all the columns of the table: 如果要表的所有列:
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;
Your first condition is unnecessary. 您的第一个条件是不必要的。
Your second would work with a correlation clause instead of group by
: 您的第二个将使用相关子句而不是
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.