Thema:
Re:Oracle Profi gesucht flat
Autor: Clyde
Datum:11.01.19 13:56
Antwort auf:Re:Oracle Profi gesucht von Jörg Schnettker

>Danke...
>
>aber warum nimmt er nun nicht meine Variable. Mit einem Fixen String funktioniert das in meiner Abfrage, aber wenn ich statt
>
>select
> vmenge
>
>dein
>
>(select trunc(exp(sum(ln(a)))) as Product from (select regexp_substr( vmenge ,'[^*]+',1,level) as a from dual connect by regexp_substr( vmenge ,'[^*]+',1,level) is not null))
>
>nutze, dann kennt er nicht vmenge.


Ich sag mal so, wenn ich eine Tabelle Test anlege mit einer Spalte vmenge und dann dual durch test ersetze, dann geht es.

Die ganze Geschichte spackt ordentlich ab, wenn mehr als eine Zeile im Spiel ist, daher besser folgendes:

select t.vmenge,
(select trunc(exp(sum(ln(nvl(a,1))))+0.5) from (
select regexp_substr(vmenge ,'[^*]+',1,level) as a
from (select vmenge from test t2 where t2.vmenge=t.vmenge)
connect by level <= length (regexp_replace(vmenge, '[^*]+')) + 1
)
) as Produkt
from test t

Die gefakte Aggregatfunktion mit trunc war auch fehlerhaft, da wird jetzt gerundet um auf den vollen Wert zu kommen. Man kann den Trunc auch ganz weglassen.


< antworten >