2016-09-02 2 views
0

ich eine Abfrage in Oracle Schreiben wie folgtAbfrage das Gehalt eines Mitarbeiters finden

select rownum as Salary, (rownum + 1) as Increment,(rownum + (rownum + 1)) as Total from dual; 

und das Ergebnis wird wie folgt

Salary Increment Total 
--------------------------- 
    1   2  3 

Aber ich bin versucht, für folgendes Ergebnis zu erhalten

Salary Increment Total 
--------------------------- 
    1   2  3 
    3   2  5 
    5   2  7 

Hier im obigen Ergebnis Summe der ersten Zeile wird Gehalt in der nächsten Zeile werden, Erhöhungsschritte amoun t wird 2 für eine Instanz, und die gesamte zweite Zeile wird das Gehalt in der dritten Zeile und so weiter. hilf mir, dieses Ergebnis zu bekommen.

+2

sind Sie einige Tabelle. Coz einfach Beitritt mit Dual wird Ihnen immer einen Rekord geben. Veröffentlichen Sie Ihre aktuelle Tabelle und einige Beispieldaten – XING

Antwort

3

Diese Abfrage gibt Ihnen das Ergebnis. Verwenden Sie nach Ebene verbinden, um 3 Zeilen zu erstellen. Verwenden Sie lag(), um die vorherige Summe abzurufen. Ich weiß ehrlich nicht, ob das ist, was Sie suchen.

select nvl(lag(totalAux) over (order by SalaryAux), SalaryAux) as Salary, 
     increament, 
     totalAux as Total 
    from (
    SELECT level  AS SalaryAux, 
      2   AS Increament, 
     (level * 2)+1 AS TotalAux 
    FROM dual 
    connect by level <=3); 

OUTPUT

SALARY INCREAMENT  TOTAL 
---------- ---------- ---------- 
     1   2   3 
     3   2   5 
     5   2   7 
+0

Ist diese Logik die gleiche wie erforderlich * "insgesamt von n-1 Zeile wird Gehalt in der n-Zeile werden" * oder produziert dies nur die gleiche Ausgabe unabhängig von der Logik? – Plirkee

+0

@Plirkee Ja, ich benutze 'lag (totalAux) over (nach SalaryAux)', um n-1 Total abzurufen und in Salary zu platzieren. Wenn n = 1 'Lag()' wird dir 'null' geben, also habe ich 'NVL()' benutzt, um es zu vermeiden. – vercelli

+0

@Plirkee mehr auf 'LAG()' und 'LEAD()' analytische Funktionen: https://oracle-base.com/articles/misc/lag-lead-analytic-functions – vercelli

Verwandte Themen