获取最大日期oracle

时间:2015-12-01 16:06:33

标签: oracle

我有一个oracle select语句,它产生了我不期望的结果,我没有解释它。如果有人能指出我的陈述有什么问题,我将不胜感激。

我有一个简单的表,包含3个字段:Date,Type和Id。我想列出每种类型和ID的最新日期。

以下是创建测试数据的脚本:

  CREATE TABLE "TEST3" 
   (    "Date" DATE, 
    "Type" VARCHAR2(20 BYTE), 
    "Id" NUMBER
   ) ;

Insert into TEST3 ("Date","Type","Id") values (to_date('11-MAR-12','DD-MON-RR'),'A',1);
Insert into TEST3 ("Date","Type","Id") values (to_date('12-SEP-15','DD-MON-RR'),'A',2);
Insert into TEST3 ("Date","Type","Id") values (to_date('05-APR-10','DD-MON-RR'),'A',2);
Insert into TEST3 ("Date","Type","Id") values (to_date('03-OCT-12','DD-MON-RR'),'B',2);

这是我用过的陈述:

SELECT MAX(c."Date"),  c."Type",  c."Id"
FROM Test3 c
GROUP BY   c."Date",c."Id",  c."Type"
ORDER BY c."Id",  c."Type"

我得到的结果是:

enter image description here

第二行不应该在结果中,不确定它为什么存在。我的陈述有什么问题?

enter image description here

2 个答案:

答案 0 :(得分:1)

抱歉,误读了你的问题。从c."Date"子句中取出GROUP BY

答案 1 :(得分:0)

如果您不想在结果中输入ID,请不要选择它并且不要将其分组。

如果你想在结果中使用它,那么你需要选择最小值或最大值,无论你想看哪个(或者总结它,你需要使用某种类别的组功能)。无论哪种方式,都将其排除在group by子句之外。

例如)

SELECT MAX(c."Date"),  c."Type",  MIN(c."Id")
FROM Test3 c
GROUP BY   c."Type"
ORDER BY c."Type"