我的表结构如下
Area Section Carrying_Engine
A1 S1 Petrol
A2 S1 Petrol
A3 S1 Diesel
A4 S1 Petrol
A5 S2 Diesel
A6 S2 Petrol问题是我们必须在S1和S2节下显示出多少区域,发动机是汽油和柴油,产量必须是
Section From_Area To_Area Carrying_Engine
S1 A1 A3 Petrol
S1 A3 A4 Diesel
S1 A4 A5 Petrol
S2 A5 A6 Diesel PS :无论我们在运输引擎还是运输部门都有过渡,运输成本都会计入上一节或运输引擎账户,例如,在第三行有一个过渡,所以在这里,我们从A2转移到A3,我们使用了汽油发动机,在A3点我们安装了柴油发动机,所以在S1部分,我们将汽油发动机从A1区移到A3区。同样,在第4至第5行中,我们使用汽油发动机和附加柴油发动机从第4至第5行移动到S1,但在这里我们只将运输成本添加到第S1帐户中,所以从A4区到A5区,我们在S1部分使用了汽油发动机。
我无法得到解决这一问题的逻辑,请指导。
发布于 2020-02-13 07:58:18
您可以利用分析函数,但我必须说,您必须有一些列来标识列的顺序,因为oracle并不提供记录的自动排序。
我使用DATETIME列标识了以下解决方案中列的顺序:
SQL>和YOUR_TABLE (区域、区段、Carrying_Engine、日期时间)为2(从双重联合中选择'A1‘、'S1’、‘汽油’、SYSDATE-6从双重联合选择'A2‘、'S1’、‘汽油’、从双重联合中选择'A3‘、'S1’、‘柴油’、‘SYSDATE-4’,从双重联合选择'A4',‘s 1’,‘汽油’,SYSDATE -3来自双重联合,所有6个选择'A5','S2',‘柴油’,SYSDATE -2从双重联合选择'A6','S2',‘汽油’,SYSDATE -1从双重选择*-从这里开始查询从这里9从10 ( 11选择12节,13个区域为FROM_AREA,14个区域为TO_AREA (按日期顺序),15 CARRYING_ENGINE 16为17 ( 18选择19 T.*,20滞后( CARRYING_ENGINE )超过(按日期排序)为LEAD_CARRYING_ENGINE 21,从YOUR_TABLE T 22 ) 23,其中LEAD_CARRYING_ENGINE <> CARRYING_ENGINE 24或LEAD_CARRYING_ENGINE为NULL 25 ) 26,TO_AREA不为空;部分FROM_AREA TO_AREA TO_AREA CARRYING_ENGINE
干杯!!
https://stackoverflow.com/questions/60201446
复制相似问题