Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Zurückgebende Abfrage:ORA-01427 Eine einzeilige Unterabfrage gibt mehr als eine Zeile zurück

Könnten Sie es mit unten versuchen,

Ich habe coalesce verwendet falls es keine Übereinstimmung für die Spalte queue gibt es wird es als null und Wert 2 betrachten wird stattdessen genommen.

update product pd
set    pd.age = case
                   when pd.exittime != null then
                    (sysdate - pd.exittime)
                   else
                    coalesce((select (sysdate - pd.entrytime)
                                from department dp
                                where pd.queue = dp.queue
                                  and pd.id = dp.id)
                            ,2)
                end
where  pd.id > 1
and    pd.status in ('1','7','2','5')
and    exists (select 1
                 from department dp
                where pd.id = dp.id
                  and pd.currentstatus = dp.currentstatus
                  and pd.activity = dp.activity);