Vergleichen Sie die Zeilen in die gleiche Tabelle mit Oracle-SQL basiert auf einem einzigartigen Kombinationen von Spalten
Ich gesehen habe, ein paar Fragen auf Stackoverflow, die beziehen sich auf den Vergleich von Zeilen, aber nichts ganz wie diese Frage. Ich habe eine Tabelle mit Spalten wie :
- Month (Date (01-Jan-2013)
- Country (Varchar2)
- SubCustomer (Varchar2)
- FTE (Number) Represents a value that is manually entered by employees each month
Wir haben einige Daten wie diese..
- 01-Jan-2013 USA Customer1 10
- 01-Feb-2013 USA Customer1 15
- 01-Mar-2013 USA Customer1 30
- 01-Jan-2013 BRA Customer2 100
- 01-Feb-2013 BRA Customer2 300
- 01-Mar-2013 BRA Customer2 50
Mein Ziel ist der Vergleich der vzä, die eingegeben werden, und geben eine Warnung in einer separaten Spalte wie "High Alert" oder "Low Alarm" oder "Ok", wenn die vzä eingegeben wird +/- 2x die vorangegangenen Monat für jeden Monat + Land + SubCustomer. Ich habe das Spiel mit verschiedenen Case-Anweisungen, aber ich kann nicht scheinen, um den Vergleich zu arbeiten von Monat zu Monat.
Verwendung der oben angeführten Daten, Kunden-1 produzieren würde eine Warnung der "High Alert" von Jan bis Mär und Kunde 2 produzieren würde eine hgh-Warnung von Jan, Feb und einen Niedrigen Alarm vom Feb, Mar.
InformationsquelleAutor Ewaver | 2013-10-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies: ENTHALTEN die MÖGLICHKEIT VON NULL-oder NULL
Ergebnisse:
Der zweite Teil ist wirklich auch hilfreich..danke!
Ich habe gerade neu die Tabelle mithilfe der Klausel. Sie können einfach verwenden Sie der Tabelle den Namen statt der Ziffer.
Ok, ich sehe jetzt..danke für die Erklärung. Ich bin immer diese Fehlermeldung, weil einige der Daten, die null hat für jeden Monat. Ich vermute, es hat zu tun mit diesem Teil des Codes. Ich habe versucht zu umgehen in dem Fall, wenn, aber ich es gibt noch den Fehler. Irgendwelche Ideen auf, wie kann ich dies umgehen? Dank ROUND ( ( FTE - PREVIOUS_FTE ) / PREVIOUS_FTE, 2 ) * 100 CHANGE_IN_PERCENT, ORA-01476: divisor ist gleich null 01476. 00000 - "divisor ist gleich null" *Ursache: *Aktion:
Sie nie erwähnt, NULL Möglichkeit, in Ihrem Datenbestand. Bitte posten Sie Ihre Daten. Wir können helfen
InformationsquelleAutor SriniV
Klingt wie Sie verwenden sollten, LAG /LEAD.
Finden Sie einige gute Beispiele hier:
http://www.oracle-base.com/articles/misc/lag-lead-analytic-functions.php
InformationsquelleAutor theodojo