Einen schönen guten Abend,
ich habe wieder einmal ein für mich größeres Problem.
In SQLite habe ich mir folgende Tabelle angelegt:
Über diesen View lasse ich mir die monatlichen Kosten ausgeben:
Aus SAP hole ich mir monatlich eine Zusammenstellung aller tatsächlich angefallenen Kosten. Damit fülle ich folgende Tabelle:
Jetzt muss ich die PLAN-zahlen mit den IST-Zahlen vergleichen.
Das ist mein Problem. Die IST-zahlen werden gelegentlich mehrfach addiert, meist aber so wie sie tatsächlich angefallen sind.
Wie bekomme ich es hin, dass stets nur jede Zeile in sapauszug einfach ausgewertet wird?
Info: die Zahlen in Fuerperiode setzen sich aus mehreren Zeilen zusammen.
Ich weiß, eigentlich müsste jede Tabelle eine ID-Spalte haben, aber …
Vielen Dank schon einmal
Wolf-Tilmann
ich habe wieder einmal ein für mich größeres Problem.
In SQLite habe ich mir folgende Tabelle angelegt:
Code:
CREATE TABLE "planung" ( "Abteilung" TEXT NOT NULL , "Unterabt" TEXT, "ArbGrp" TEXT, "Bereich" TEXT NOT NULL , "Name" TEXT NOT NULL , "Vorname" TEXT NOT NULL , "EUR_Std" REAL, "Std_Mon" REAL NOT NULL , "Beginn" DATETIME NOT NULL , "Ende" DATETIME NOT NULL , UNIQUE (Abteilung, Bereich, name, vorname, EUR_Std, Std_Mon, Beginn, Ende) )
Code:
CREATE VIEW "monatszuordnung" AS SELECT DISTINCT ( strftime ( '%Y-%m' , monate . mstart ) ) AS Kal_Per , strftime ( '%Y' , monate . mstart ) AS Kal_Jahr , strftime ( '%m' , monate . mstart ) AS Kal_Mon , monate.semester AS Semester, planung . Abteilung AS Abteilung , planung . Unterabt AS Unterabt , planung . ArbGrp AS ArbGrp , planung . Bereich AS Bereich , planung . Name AS Name , planung.vorname AS Vorname, CASE WHEN sapauszug . referenz IS NULL THEN ('ohne: '||Name||', '||Vorname) ELSE sapauszug.referenz END AS Persnr , planung . EUR_Std AS EUR_STD , planung . Std_Mon AS STD_MON , planung . Beginn AS AV_Beginn , planung . Ende AS AV_Ende , CASE WHEN planung . Beginn > monate . mstart THEN planung . Beginn ELSE monate . mstart END AS M_Beginn , CASE WHEN planung . Ende < monate . mende THEN planung . Ende ELSE monate . mende END AS M_Ende , julianday ( CASE WHEN planung . Ende < monate . mende THEN planung . Ende ELSE monate . mende END ) - julianday ( CASE WHEN planung . Beginn > monate . mstart THEN planung . Beginn ELSE monate . mstart END ) + 1 AS Tage_Mon , ROUND (( planung . EUR_STD * planung . Std_Mon * ( julianday ( CASE WHEN planung . Ende < monate . mende THEN planung . Ende ELSE monate . mende END ) - julianday ( CASE WHEN planung . Beginn > monate . mstart THEN planung . Beginn ELSE monate . mstart END ) + 1 ) / strftime ( '%d' , monate . mstart , '+1 month' , '-1 day' )*1.28) , 2 ) AS Gehalt_Mon FROM planung , monate LEFT JOIN sapauszug ON sapauszug.namegp = (planung.Name||' '||planung.Vorname) WHERE planung . Beginn <= monate . mende AND planung . Ende >= monate . mstart ORDER BY Referenz, Name, Vorname
Code:
CREATE TABLE "sapauszug" ( "jahr" TEXT, "monat" TEXT, "fist" TEXT, "fonds" TEXT, "fipos" TEXT, "sachktotxt" TEXT, "fibeleg" TEXT, "nrgp" TEXT, "namegp" TEXT, "referenz" TEXT, "lohnart" TEXT, "sachbearb" TEXT, "belegkopf" TEXT, "posttext2" TEXT, "anlagenr" TEXT, "anlage" TEXT, "benutzer" TEXT, "betrag" REAL, "buchdat" DATETIME, "fuerperiode" DATETIME, "redat" DATETIME )
Das ist mein Problem. Die IST-zahlen werden gelegentlich mehrfach addiert, meist aber so wie sie tatsächlich angefallen sind.
Code:
CREATE VIEW DifferenzenPersMon AS SELECT monatszahlungen_IST.Fuerperiode AS IFuerperiode, monatszuordnung.Semester AS Semester, monatszuordnung.Abteilung AS Abteilung, monatszuordnung.Unterabt AS Unterabt, monatszuordnung.Kal_Per AS SKAL, monatszahlungen_IST.KalPer AS IKAL, monatszuordnung.PersNr AS MPersNr, monatszahlungen_IST.PersNr AS IPersNr, monatszuordnung.Name AS MName, monatszuordnung.Vorname AS MVorname, monatszahlungen_IST.GPartner AS IPartner, monatszuordnung.Gehalt_Mon AS SGehalt, monatszahlungen_IST.Gehalt AS IGehalt, ROUND(monatszuordnung.Gehalt_Mon - monatszahlungen_IST.Gehalt,2) AS Differenz FROM monatszuordnung, monatszahlungen_IST WHERE monatszuordnung.PersNr = monatszahlungen_IST.PersNr AND monatszuordnung.Kal_Per = monatszahlungen_IST.KalPer ORDER BY IFuerperiode, Semester, Unterabt, MName, Mvorname
Info: die Zahlen in Fuerperiode setzen sich aus mehreren Zeilen zusammen.
Ich weiß, eigentlich müsste jede Tabelle eine ID-Spalte haben, aber …
Vielen Dank schon einmal
Wolf-Tilmann
Comment