Oracle11g 在oracle中领导功能组
我想用两列按前导函数分组。这是我的表格数据Oracle11g 在oracle中领导功能组,oracle11g,Oracle11g,我想用两列按前导函数分组。这是我的表格数据 Id Name_Id Name Item_Id Item_Name date 1 1 Car 1 SUV 1-Jan-2015 2 1 Car 1 SUV 12-March-2015 3 1 Car 1 SUV 20-Apri
Id Name_Id Name Item_Id Item_Name date
1 1 Car 1 SUV 1-Jan-2015
2 1 Car 1 SUV 12-March-2015
3 1 Car 1 SUV 20-April-2015
4 1 Car 2 Sport 23-April-2015
5 2 Bike 1 SUV 18-July-2015
6 2 Bike 1 SUV 20-Aug-2015
7 2 Bike 2 Sport 18-Sept-2015
8 2 Bike 3 Honda 20-OCT-2015
我需要上面表格的结果
Id Name_Id Name Item_Id Item_Name start date end date
1 1 Car 1 SUV 1-Jan-2015 20-April-2015
2 1 Car 2 Sport 20-April-2015 23-April-2015
3 2 Bike 1 SUV 18-July-2015 20-Aug-2015
4 2 Bike 2 Sport 20-Aug-2015 18-Sept-2015
5 2 Bike 3 Honda 18-Sept-2015 20-OCT-2015
非常感谢您的任何建议。我认为您不需要在这里使用
LEAD
。下面的CTE为每个项目Id
计算最早和最晚日期。然后将其连接到原始表,以限制与最早的项\u Id
对应的记录。同时,结束日期也会在连接期间拉入
WITH cte AS (
SELECT Name,
Item_Id,
MIN(date) AS start_date,
MAX(date) AS end_date
FROM yourTable
GROUP BY Name, Item_Id
)
SELECT t1.Id, t1.Name_Id, t1.Name, t1.Item_Id, t1.Item_Name,
t2.start_date,
t2.end_date
FROM yourTable t1
INNER JOIN cte t2
ON t1.Item_Id = t2.Item_Id AND
t1.Name = t2.Name AND
t1.date = t2.start_date
谢谢您的回答,但我需要的数据是按名称\u Id和项目\u Id分组的。我更新了问题,请检查。@John answer updated,我所做的只是修改CTE中的
分组,然后稍微修改查询中的联接以使用名称和项目。