我有一个包含多个列的表,其中包含月份和年份。我试图根据column1,column2确定最佳月份和年份。
我有一个测试表的DDL。
CREATE TABLE "TEST"
( "COLUMN1" VARCHAR2(6 BYTE),
"COLUMN2" VARCHAR2(6 BYTE),
"YEAR" NUMBER,
"MONTH" NUMBER
);
这是示例表中的数据。
REM INSERTING into TEST
SET DEFINE OFF;
Insert into TEST (COLUMN1,COLUMN2,YEAR,MONTH) values ('A','A',11,4);
Insert into TEST (COLUMN1,COLUMN2,YEAR,MONTH) values ('A','A',14,3);
Insert into TEST (COLUMN1,COLUMN2,YEAR,MONTH) values ('A','A',11,5);
Insert into TEST (COLUMN1,COLUMN2,YEAR,MONTH) values ('A','A',14,1);
我希望获得最高月份和年份的记录。当我尝试使用此查询检索记录时
SELECT t.COLUMN1, t.COLUMN2, max(t.YEAR), max(t.MONTH)
FROM TEST t
group by COLUMN1, COLUMN2;
我得到了这个结果
在我看来,它将最大年份和最大月份分开,与其他列无关。 预期的结果应该是
我怎样才能得到合适的结果? 我尝试了几个自连接无济于事。
答案 0 :(得分:2)
您希望将Oracle的内置LAST
(或FIRST
)与Shpping : [
{
"id": "1",
"name": "Dress",
"deleted_at": null,
"created_at": null,
"updated_at": null,
"minicomp": [
{
"id": "1",
"cname": "basic",
"base_id": 44
},
{
"id": "2",
"cname": "Shirt",
"base_id": 177444
},
{
"id": "3",
"cname": "Pants",
"base_id": 444
}
]
}
];
一起使用,如下所示:
MAX
它只会在最近一年找到最大月份。
答案 1 :(得分:0)
您还可以以某种方式连接两个值,计算最大值,然后拆分它们。在年和月的情况下,您可以计算自某个时代以来的月份:
select column1, column2,
trunc(max(year*12+month-1)/12) year,
mod (max(year*12+month-1),12)+1 month
from test
group by column1, column2
答案 2 :(得分:-1)
select distinct column1, column2, year, max(month) over(partition by column1, column2, year) mxmnth
from ir_wip.test tbl2
where year=(select max(year) from ir_wip.test tbl where tbl.column1=tbl2.column1 and tbl.column2=tbl2.column2)