Oracle 10g, чтобы знать timedifference между двумя строками в одной таблице

requestid   Date
2   12/22/2016 23:21
3   12/22/2016 23:21
1   12/22/2016 23:21
37  12/22/2016 23:20
156 12/22/2016 23:20

Может ли кто-то помочь мне узнать разницу во времени между requestid 1 и 156?

Я попробовал следующий запрос, но не получил правильный вывод.

 Select A.IFCOMPONENTUID,A.FPROCSTAGESTARTDT, (A.FPROCSTAGESTARTDT - B.FPROCSTAGESTARTDT) AS timedifference from XA_CASA.CFX_FILE_PROC_STAT A
where INNER JOIN XA_CASA.CFX_FILE_PROC_STAT B On A.IFCOMPONENTUID = (B.IFCOMPONENTUID + 155)  and 
 order by FILERUNTIMEUID desc

1 ответ

  1. похож на вашу конструкцию…

    SELECT
        A.IFCOMPONENTUID,
        A.FPROCSTAGESTARTDT,
        B.IFCOMPONENTUID CompareID
        (A.FPROCSTAGESTARTDT - B.FPROCSTAGESTARTDT) TimeDiff
    FROM XA_CASA.CFX_FILE_PROC_STAT A
    INNER JOIN XA_CASA.CFX_FILE_PROC_STAT B
        ON A.IFCOMPONENTUID = (B.IFCOMPONENTUID + 155)
    WHERE A.IFCOMPONENTUID = 1
    

    Я бы предпочел иметь явные идентификаторы в предложении where для большей гибкости для изменения идентификаторов:

    SELECT
        A.IFCOMPONENTUID,
        A.FPROCSTAGESTARTDT,
        B.IFCOMPONENTUID CompareID,
        (A.FPROCSTAGESTARTDT - B.FPROCSTAGESTARTDT) TimeDiff
    FROM XA_CASA.CFX_FILE_PROC_STAT A
    INNER JOIN XA_CASA.CFX_FILE_PROC_STAT B
        ON 1 = 1
    WHERE A.IFCOMPONENTUID = 1
        AND B.IFCOMPONENTUID = 156