Hallo zusammen,
ich habe gerade ein kurioses Problem. Ich stehe vor dem Problem, dass ich in einer Datenbank mehrere Einträge pro Tag habe, jedoch immer nur einen ausgeben möchte. Diese Werte haben im System unterschiedliche ID von 1 bis 35.
Nun ist es so, dass ich in der Priorisierung der Rückgabe eine andere Wertigkeit habe. Daher habe ich die Werte über eine Case Funktion in andere Zahlenwerte übersetzt. Hiervon soll er mir dann über die Min-Funktion den niedrigsten Wert ausgeben. Anbei der Code:
Der View funktioniert hervoragend und gibt mit immer den kleinsten (übersetzten) Wert zurück. Dies funktioniert, bis auf die (Originalwerte) 10,19,24,25,27,30,31,32,33 - also bis zu dem Punkt, an dem die übersetzten Werte unter 10 fallen.
Habe auch schon versucht, dass ganze jeweils um hundert zu erhöhen(die übersetzten Werte). Dies geht auch nicht, also kann es daran nicht liegen.
Stimmt etwas mit meiner "Case" nicht? Ich bin ratlos.....
Vielleicht weiß einer von euch, was hier nicht stimmt. Im Voraus besten Dank.
Grüße
Andreas
P.S.: Bitte nicht über die Unübersichtlichkeit ärgern... bin leider kein Programmierer
ich habe gerade ein kurioses Problem. Ich stehe vor dem Problem, dass ich in einer Datenbank mehrere Einträge pro Tag habe, jedoch immer nur einen ausgeben möchte. Diese Werte haben im System unterschiedliche ID von 1 bis 35.
Nun ist es so, dass ich in der Priorisierung der Rückgabe eine andere Wertigkeit habe. Daher habe ich die Werte über eine Case Funktion in andere Zahlenwerte übersetzt. Hiervon soll er mir dann über die Min-Funktion den niedrigsten Wert ausgeben. Anbei der Code:
Code:
CREATE OR REPLACE FORCE VIEW "PMADMIN"."ARR_STATUS_RETOUREN_AW" ("SENDUNGSNR", "DATUM", "BEZIRK", "STATUS_NEU") AS select sendungsnr, trunc(vdat)as Datum,Bezirk, min(case when status='1' then '98' when status='2' then '17' when status='3' then '18' when status='4' then '19' when status='5' then '99' when status='10' then '3' when status='17' then '16' when status='18' then '15' when status='19' then '2' when status='21' then '14' when status='24' then '5' when status='25' then '1' when status='27' then '4' when status='28' then '12' when status='29' then '13' when status='30' then '7' when status='31' then '6' when status='32' then '8' when status='33' then '9' when status='34' then '10' when status='35' then '11' end) as STATUS_NEU from pm_sendex_status_change where (Vart ='MSTA' or VArt='MS' or VART='MSAS' or VART='MSP' or VART='MWZ') group by sendungsnr, trunc(vdat),Bezirk;
Habe auch schon versucht, dass ganze jeweils um hundert zu erhöhen(die übersetzten Werte). Dies geht auch nicht, also kann es daran nicht liegen.
Stimmt etwas mit meiner "Case" nicht? Ich bin ratlos.....
Vielleicht weiß einer von euch, was hier nicht stimmt. Im Voraus besten Dank.
Grüße
Andreas
P.S.: Bitte nicht über die Unübersichtlichkeit ärgern... bin leider kein Programmierer
Comment