für SQL-Profis - einen Wert in Relation verteilen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

heinz_ketchup
****
Beiträge: 111
Registriert: So, 07.10.2007 16:05
Wohnort: München

für SQL-Profis - einen Wert in Relation verteilen

Beitrag von heinz_ketchup »

Hallo,

kann ich mein Problem mit SQL lösen, oder bin ich hier auf dem Holzweg? :roll:

1. Tabelle (Kontennummern mit Ist-Werten und übergeordneter Kostenart = 71) mit Feldern:

Wert..Kto....KstSB...Monat..ZeileBE
100...2110...5499...1........71
50.....2110...5499....2.......71
100...2115...5499....1........71
50.....2115...5499....2........71
Primärschlüssel = Kto

2. Tabelle (Planwerte für's ganze Jahr auf Ebene von Kostenarten) mit Feldern:

zeile_be...kostenart..............wert_pa
70..........Abschreibungen....32500
71..........Zinsen..................10000
72..........Wagnisse...............7000
Primärschlüssel = zeile_be

Die Anforderung:
Eine Query, die den Planwert (Tabelle 2) von zeile_be 71 = 10000, auf Basis der Ist-Werte (Tabelle 1) in Relation der Konten und Monate verteilt und mit Insert into in eine neue Tabelle schreibt. Wobei die Insert-Anweisung nicht das Problem ist.
Ich weiß nicht wie mein Join und die dazugehörige Where-Bedingung aussehen könnte.

Vielen Dank für eure Hilfe und

viele Grüße
Werner

PS: Bitte entschuldigt die doofen Pünktchen in meinen "Tabellen", aber ich bin mit der Listendarstellung nicht zurecht gekommen :oops:
------------------------------------------------------------
LibreOffice 3.5.4.2 auf Mac OS X 10.10.1 und MySQL 5.5
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: für SQL-Profis - einen Wert in Relation verteilen

Beitrag von Barlee »

Hallo Werner,
auf Basis der Ist-Werte (Tabelle 1) in Relation der Konten und Monate verteilt
Wie soll das Ergebnis dieser Aufteilung am Beispiel von Tabelle 1 aussehen? Ist folgende Überlegung korrekt?

10000 / 2 Konten(Kto. 2110 und 2115) = 5000 je Konto, zu gleichen Beträgen auf zwei Monate aufgeteilt = 2500,

also:

Wert.....Kto.......KstSB...Monat.....ZeileBE....rel.Aufteilung
100......2110......5499.......1.............71............2500
50........2110......5499.......2.............71............2500
100......2115......5499.......1.............71............2500
50........2115......5499.......2.............71............2500
Primärschlüssel = Kto

Wenn nein, kannst Du hierzu einmal ein Beispiel bringen?

Gruß Barlee
heinz_ketchup
****
Beiträge: 111
Registriert: So, 07.10.2007 16:05
Wohnort: München

Re: für SQL-Profis - einen Wert in Relation verteilen

Beitrag von heinz_ketchup »

Hallo Barlee,

vielen Dank für Dein Interesse an meinem Problem.
Die Verteilung sollte tatsächlich in Relation der Wert-Spalte erfolgen. Hier das Beispiel zur Verdeutlichung (ich habe die Werte beim Kto 2115 leicht verändert, um die Verteilung noch deutlicher hervorzuheben):

Summe für ZeileBE = 10000 (aus Tabelle 2)
Summe für Wert = 260 (siehe unten, in Tabelle 1)

Formel für Verteilung: Wert / Summe (Wert) * ZeileBE
Bsp: 100 / 260 * 10000 = 3846,15

Wert.....Kto.......KstSB...Monat.......ZeileBE.....rel.Aufteilung
100......2110......5499.......1.............71..........3846,15
50........2110......5499.......2.............71..........1923,08
80........2115......5499.......1.............71..........3076,92
30........2115......5499.......2.............71..........1153,85
Primärschlüssel = Kto

Und für diese Berechnung komme ich einfach nicht mit meinem Join und der dazugehörigen Where-Bedingung klar.
Ich hoffe, ich konnte das Problem nun ein wenig besser beschreiben.

Viele Grüße
Werner
------------------------------------------------------------
LibreOffice 3.5.4.2 auf Mac OS X 10.10.1 und MySQL 5.5
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: für SQL-Profis - einen Wert in Relation verteilen

Beitrag von Barlee »

Hallo Werner,

ja, nun ist es klar. Dass der Wert mit einbezogen werden soll, ging aus Deiner ersten Beschreibung nicht eindeutig hervor.
Folgende Abfrage führt zu gewünschtem Ergebnis.
(Spaltenbezeichner orientieren sich an Deinem Ausgangsbeitrag; musst Du also ggf. anpassen; ebenso wie die Tabellennamen. Die Abfrage verwendet für Tabelle1/Tabelle2 die Tabellennamen Tab_1/Tab_2)

Code: Alles auswählen

SELECT 
"d"."Wert", 
"d"."Kto", 
"d"."KstSb", 
"d"."Monat", 
"d"."Zeile_be", 
"d"."Wert_pa", 
"d"."Wert" / "e"."Summe" * "d"."Wert_pa" AS "rel_Aufteilung" 

FROM 
( 
SELECT 
"a"."Wert", 
"a"."Kto", 
"a"."KstSb", 
"a"."Monat", 
"b"."Zeile_be", 
"b"."Wert_pa" 

FROM 
"Tab_1" AS "a", 
"Tab_2" AS "b" 

WHERE "a"."ZeileBE" = "b"."Zeile_be" 
) AS "d", 
( 
SELECT 
SUM( "a"."Wert" ) AS "Summe", 
"b"."Zeile_be" 

FROM 
"Tab_1" AS "a", 
"Tab_2" AS "b" 

WHERE ( "a"."ZeileBE" = "b"."Zeile_be" ) 
GROUP BY "b"."Zeile_be" 
) AS "e" 

WHERE "d"."Zeile_be" = "e"."Zeile_be"
rel_Aufteilung.jpg
rel_Aufteilung.jpg (21.67 KiB) 712 mal betrachtet
Hoffe, es hilft. Schönes Wochenende!

Gruß Barlee
Zuletzt geändert von Barlee am Sa, 19.01.2008 20:38, insgesamt 1-mal geändert.
heinz_ketchup
****
Beiträge: 111
Registriert: So, 07.10.2007 16:05
Wohnort: München

Re: für SQL-Profis - einen Wert in Relation verteilen

Beitrag von heinz_ketchup »

:shock: ich wusste, dass ich das, mit meinen Grundlagenkenntnissen in SQL, nicht hin bekomme.

Bei uns in Bayern sagt man bei sowas: reschpeckt!

Vielen Dank, Barlee!!!

Ich werde mich da schon noch ein wenig durcharbeiten müssen. Mit derart verschachtelten Selects habe ich bislang noch keine Erfahrung. Aber es gibt ja immer ein erstes mal.

Nochmals Danke und ein schönes Wochenende!

Werner
------------------------------------------------------------
LibreOffice 3.5.4.2 auf Mac OS X 10.10.1 und MySQL 5.5
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: für SQL-Profis - einen Wert in Relation verteilen

Beitrag von Barlee »

Bitteschön! Gern geschehen.

Ich habe die Abfrage in meinem vorigen Beitrag nochmal aktualisiert. Da war noch ein überflüssiges SELECT aus der Entwicklung enthalten. Jetzt ist sie übersichtlicher ;-)

Falls Du Fragen beim Durcharbeiten hast - immer raus damit.

Gruß Barlee
heinz_ketchup
****
Beiträge: 111
Registriert: So, 07.10.2007 16:05
Wohnort: München

Re: für SQL-Profis - einen Wert in Relation verteilen

Beitrag von heinz_ketchup »

Aaah, dachte ich's mir doch. Den Select mit Tabelle c habe ich auch nicht wirklich verstanden.
Jetzt ist es schon übersichtlicher. :)

Nochmals vielen Dank und schöne Grüße!
Werner
------------------------------------------------------------
LibreOffice 3.5.4.2 auf Mac OS X 10.10.1 und MySQL 5.5
Antworten