Announcement

Collapse
No announcement yet.

Division in Abfrage -> Überlauf

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

  • Division in Abfrage -> Überlauf

    Hallo zusammen,

    ich komme hier einfach nicht weiter. In folgender Abfrage erhalte ich immer eine Fehlermeldung: Liste.GetDataTableOCI-22053: Überlauffehler

    Quelltext:
    Code:
    SELECT User AS User, Sum(x.Gesamtmenge) AS Gesamtmenge, Sum(x.StatusC) as StatusC, Case when
    sum(x.Gesamtmenge) > 0 
    and 
    sum(x.StatusC) is not NULL then ((sum(x.StatusC)/Sum(x.Gesamtmenge)))
    else
    0
    End case
    FROM 
    (SELECT User, Count(User) AS Gesamtmenge, NULL as StatusC
    FROM pm_bestand
    where
    Eingangdat >= to_date('<%datum_von%>', 'dd.MM.yyyy')
    and
    Eingangdat < to_date('<%datum_bis%>', 'dd.MM.yyyy')+1
    GROUP BY User
    
    union all
    
    SELECT User, NULL as Gesamtmenge, Count(Aus1Stat) AS StatusC
    FROM pm_bestand
    WHERE (Aus1Stat='C' or Aus2Stat='C' or Aus3Stat='C')
    AND
    Eingangdat >= to_date('<%datum_von%>', 'dd.MM.yyyy')
    and
    Eingangdat < to_date('<%datum_bis%>', 'dd.MM.yyyy')+1
    GROUP BY User) 
    
    x
    GROUP BY User
    wenn ich sum(x.Gesamtmenge) mit sum(x.StatusS) multipliziere geht alles. Auch die Division durch eine zahl geht. Will ich das eine durch das andere teilen kommt obige Fehlermeldung.

    Vielleicht stehe ich auch gerade auf dem Schlauch. Für eure Mithilfe im Voraus besten Dank.

    Viele Grüße

    Andreas
    Zuletzt editiert von Windsurfer76; 22.03.2012, 16:16.

  • #2
    Liste.GetDataTableOCI-22053: Überlauffehler
    Das ist keine Oraclefehlermeldung. Die Abfrage ist wohl nicht das Problem sondern eher die Anwendung die die Daten dann abholen und verarbeiten soll.

    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      Hallo Windsurfer,

      um zu testen, ob der Fehler in Deinem Code oder in der Anwendung liegt, würde ich folgenden Weg wählen:

      Mit SQL*Plus gegen die DB verbinden und da den Code absetzen.
      Läuft es hier fehlerfrei liegt es wohl an der Applikation, welche den Code verwendet; ansonsten bekommst Du eine Oracle-Fehlermeldung mit der man hier im Forum dann mehr anfangen kann.

      Freundlicher Gruß
      Albernd

      Comment


      • #4
        Vielen Dank erst einmal für euere Antworten. Ich mache das ganze hier nur nebenher, bin zwar sehr bemüht aber immer noch näher am "dau" als am versierten Anwender (ich arbeite dran ;-) ).

        Ich habe hier noch eine Ídee. Wenn ich die beiden Werde multipliziere funktioniert ja alles.
        Könnte es also daran liegen, dass einzelne Zeilen durch die Division zu viele Nachkommastellen liefern und sich so der Überlauf in der Tabellendarstellung ergibt? Wenn ja, ließe sich das über einen Formatbefehl korrigieren? Wenn ja, wie? ;-)

        Viele Grüße

        Andreas

        Comment


        • #5
          Du kannst mit der Funktion ROUND das Ergebnis runden, aber es bleibt immer noch ein Problem der Anwendung nicht des SQLs an sich. In Oracle gibt es keinen Überlauf der "Tabellendarstellung"

          Hast du das Statement schon mit Toad/sqlplus/sql developer etc. auf der DB ausgeführt?

          Dim
          Zitat Tom Kyte:
          I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

          Comment


          • #6
            Vielen Dank jetzt geht es.

            Ich kann leider nicht direkt auf der Datenbank rumspielen. Ich habe nur einen Zugriff via Web oder über ein Anwendungsprogramm.

            Weitere Programme kann ich leider nicht aufspielen, da unsere EDV-Abteilung sehr strikte Vorgaben hat und ich mich hier auf einer "Anweder-Insel" bewege.

            Dennoch, mit euerer HIlfe geht es nun. Herzlichen Dank.

            Comment

            Working...
            X