hier Mein Problem ist, dass ich zwei Tabellen haben,Wie kann ich die SUMME einer Variablen aus einer Reihe von ID-Nummern erhalten? PLSQL
SQL> select * from paydata1;
IDNO NAME J SALARY PAYHR
---- ------------------------- - ---------- ----------
1111 Ann French S 75000 0
2222 Robert Costa H 0 45
3333 Linda Ames H 0 50
4444 Scott Brooks S 78000 0
5555 Susan Ash S 57000 0
6666 James Smith S 55000 0
7777 Mary Jones H 0 36
8888 John Morse H 0 39
und
SQL> select * from paytran1;
IDNO PRO HOURSWK
---- --- ----------
1111 123 20
1111 456 10
1111 789 15
2222 123 17
2222 456 24
2222 789 20
3333 123 20
3333 789 20
4444 123 10
4444 456 28
4444 789 5
IDNO PRO HOURSWK
---- --- ----------
5555 456 40
6666 456 44
7777 456 30
7777 789 15
8888 123 10
8888 456 25
8888 789 5
MY PL/SQL-Code hier:
SET SERVEROUTPUT ON
DECLARE
v_idno paydata1.idno%TYPE;
v_name paydata1.name%TYPE;
v_jcode paydata1.jobcode%TYPE;
v_sal paydata1.salary%TYPE;
v_payh paydata1.payhr%TYPE;
v_hrsw paytran1.hourswk%TYPE;
CURSOR curse IS
SELECT paydata1.idno, name, jobcode, salary, payhr, hourswk
FROM paydata1, paytran1;
BEGIN
OPEN curse;
FETCH curse INTO v_idno, v_name, v_jcode, v_sal, v_payh, v_hrsw;
WHILE curse%ROWCOUNT < 9 AND curse%FOUND LOOP
IF v_jcode = 'S' THEN
v_sal := v_sal/52;
DBMS_OUTPUT.PUT_LINE(v_name || ': weekly salary is ' || v_sal);
ELSE
v_hrsw := sum(payhr)
v_sal := v_payh * v_hrsw;
DBMS_OUTPUT.PUT_LINE(v_name || ': overall pay is ' || v_sal);
END IF;
FETCH curse INTO v_idno, v_name, v_jcode, v_sal, v_payh, v_hrsw;
END LOOP;
CLOSE curse;
END;
/
SET SERVEROUTPUT OFF
Ich muss in der Lage sein teilen Sie die Angestellten, wo sie angestellt sind, und finden Sie die Bezahlung pro Stunde multipliziert mit Stunden gearbeitet (aus der zweiten Tabelle) Mein Problem ist, dass in der zweiten Tabelle, die Stunden gearbeitet sind in mehrere Abschnitte aufgeteilt. Wie kann ich die Summe der geleisteten Stunden erhalten, damit ich sie in meine Variable 'v_hrsw' einfügen kann?
Im Moment ist es nur die erste Nummer, die es in paytran1.hourswk findet, um es als v_hrsw zu verwenden.
Vielen Dank für jede Hilfe.
EDIT:
Ergebnis sieht wie folgt aus derzeit ...
Ann French: weekly salary is 1442.31
Robert Costa: overall pay is 900
Linda Ames: overall pay is 1000
Scott Brooks: weekly salary is 1500
Susan Ash: weekly salary is 1096.15
James Smith: weekly salary is 1057.69
Mary Jones: overall pay is 720
John Morse: overall pay is 780
Aber jemand mit "Gesamtvergütung" hat eine falsche Gesamt.
ändern Was Ihre erwartete Ausgabe auf 2 Tabellen basiert? – Utsav
Sorry, ich habe die Ausgabe hinzugefügt. –