Ваш синтаксис относительно круглых скобок для переразделения немного неверен.Я пробовал первую часть выбора, используя MAX( "StepEnd" ) OVER ( PARTITION BY "Order", "Step" )
и MIN( "StepStart" ) OVER ( PARTITION BY "Order", "Step" )
.Мне еще не удалось запустить LAG.
Может быть, есть даже более простое решение.Я проверил это с целыми числами вместо дат (поскольку мне не ясно, как ваши значения выглядят в реальности) и придумал довольно простое решение, предполагая, что значение для StepEnd
всегда больше, чем значение для StepStart
.
Группировка по приводит к правильным значениям для минимального / максимального значения.
http://sqlfiddle.com/#!4/d80532/4/0
Настройка:
CREATE TABLE Table1
("Order" varchar2(11), "Step" varchar2(6), "StepStart" NUMBER, "StepEnd" NUMBER, "ProcessCode" varchar2(13))
;
INSERT ALL
INTO Table1 ("Order", "Step", "StepStart", "StepEnd", "ProcessCode")
VALUES ('103502090', '6950', 1, 1000, 'START')
INTO Table1 ("Order", "Step", "StepStart", "StepEnd", "ProcessCode")
VALUES ('103502090', '6950', 2, 2000, 'END')
INTO Table1 ("Order", "Step", "StepStart", "StepEnd", "ProcessCode")
VALUES ('103502091', '7000', 5, 1000, 'END')
INTO Table1 ("Order", "Step", "StepStart", "StepEnd", "ProcessCode")
VALUES ('103502091', '7000', 4, 3000, 'START')
ВыбратьЗаявление:
SELECT "order",
"step",
Max("stepend") - Min("stepstart") AS diff
FROM table1
GROUP BY "order",
"step"