1

(我使用的是 Oracle 11。)

我有一个看起来像这样的查询,以获取唯一的报告编号...

select distinct (REPORT_NUMBERS) from REPORTS

工作正常。

现在我想按他们的 CREATION_DATE 字段对它们进行排序。我试过这个...

select distinct (REPORT_NUMBERS), CREATION_DATE from REPORTS order by CREATION_DATE asc

但我得到重复的 REPORT_NUMBERS。我试过这个...

select distinct (REPORT_NUMBERS) from REPORTS order by CREATION_DATE asc

但这给了我一个“ORA-01791: not a SELECTed expression”错误。

如何获取按创建日期排序的唯一报告编号列表?

任何帮助是极大的赞赏!

4

5 回答 5

3

由于您希望它们以升序方式排序,因此应该这样做:

SELECT REPORT_NUMBERS, MIN(CREATION_DATE) MinCreationDate
FROM REPORTS
GROUP BY REPORT_NUMBERS
ORDER BY MinCreationDate
于 2013-06-06T14:03:09.263 回答
1

您可以 GROUP 获得 MAX/MIN 创建日期:

select REPORT_NUMBERS, MIN(CREATION_DATE)
from REPORTS 
GROUP BY REPORT_NUMBERS

Min() 将是最早的日期, MAX() 是最近的。

于 2013-06-06T14:02:04.617 回答
1

该要求没有意义,除非您想按最新创建日期或最早创建日期等对它们进行排序,在这种情况下,您可以:

select REPORT_NUMBERS, MAX(CREATION_DATE) lastest_creation_date
from REPORTS
group by REPORT_NUMBERS
order by 2
于 2013-06-06T14:03:52.777 回答
0

您将获得独特的 (REPORT_NUMBERS) 和 CREATION_DATE 一起。不是单独的 REPORT_NUMBERS。

于 2013-06-06T14:04:32.640 回答
0

尝试以下 -

select REPORT_NUMBERS, MIN(CREATION_DATE) AS MinCreationDate
from REPORTS
group by REPORT_NUMBERS
order by 2 desc
于 2013-06-06T14:07:45.863 回答