У меня есть этот оператор case, в котором я получаю измененный столбец stop_time как Stop_TimeNEW
select
case
when Stop_Time is null then sysdate
else Stop_Time
end as Stop_TimeNEW
from TEMPTABLE;
И я хотел бы использовать это значение Stop_TimeNEW в этом операторе select всякий раз, когда он говорит «Stop_Time».
Select sum(minutes)
From (
Select Distinct
B.DateR1
,B.DateR2
, (((extract(DAY FROM DateR2-DateR1)*24*60*60)+
(extract(HOUR FROM DateR2-DateR1)*60*60)+
(extract(MINUTE FROM DateR2-DateR1)*60)+
extract(SECOND FROM DateR2-DateR1)))/60 as minutes
From TempTable A
Cross Apply (
Select
Min(Start_Time) as DateR1
,max(Stop_Time) as DateR2
From TempTable
Where Start_Time <= A.Stop_Time and Stop_Time >= A.Start_Time
) B
) A
Я пытался сделать это, но это не сработало
Select sum(minutes)
From (
Select Distinct
B.DateR1
,B.DateR2
, (((extract(DAY FROM DateR2-DateR1)*24*60*60)+
(extract(HOUR FROM DateR2-DateR1)*60*60)+
(extract(MINUTE FROM DateR2-DateR1)*60)+
extract(SECOND FROM DateR2-DateR1)))/60 as minutes
From TempTable A
Cross Apply (
Select
case
when Stop_Time is null then sysdate
else Stop_Time
end as Stop_TimeNEW,
Min(Start_Time) as DateR1
,max(Stop_TimeNEW) as DateR2
From TempTable
Where Start_Time <= A.Stop_TimeNEW and Stop_TimeNEW >= A.Start_Time
) B
) A
И
Cross Apply (
Select
case
when Stop_Time is null then sysdate
else Stop_Time
end as Stop_TimeNEW,
Min(Start_Time) as DateR1
,max(case
when Stop_Time is null then sysdate
else Stop_Time
end as Stop_TimeNEW) as DateR2
From TempTable
Where Start_Time <= (select case
when Stop_Time is null then sysdate
else Stop_Time
end as Stop_TimeNEW from a) and (select case
when Stop_Time is null then sysdate
else Stop_Time
end as Stop_TimeNEW from temptable) >= A.Start_Time
) B
Интересно, кто-нибудь может помочь?