我有一个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"
我得到的结果是:
第二行不应该在结果中,不确定它为什么存在。我的陈述有什么问题?
答案 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"