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中的
分组,然后稍微修改查询中的联接以使用名称和项目。