Announcement

Collapse
No announcement yet.

Min-Funktion liefert falsches Ergebnis?!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Min-Funktion liefert falsches Ergebnis?!

    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:

    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;
    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

  • #2
    Du gibst die Werte als strings zurück (und dort ist dann z.B. 2 größer 11!). Du solltest die Hochkommata wegnehmen und damit deine Werte auch wie Integer behandeln.

    Comment


    • #3
      Du verwendest Strings zum Sortieren und die werden leider anders als Zahlen sortiert:

      Zahlen Sortierung:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      ...

      String Sortierung:

      1
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      2
      20
      ...

      Deswegen entweder eine Null vor jede einstellige Zahl oder einfach die '' weglassen und Zahlen verwenden

      Comment


      • #4
        Herzlichen Dank!!!! Du bist offiziell mein Held des Tages!!!!

        Comment

        Working...
        X