von Barlee » So, 11.04.2010 23:35
Hallo Wolfgang,
das ist gar nicht so schwer.
Da Du das Ergebnis der Abfrage anschließend in eine andere Tabelle mittels INSERT überführen möchtest, sollte sich das Abfrageergebnis an der Struktur der "Zieltabelle" orientieren.
Folgendes Beispiel. Ausgangstabelle (Tab_Summe genannt):

- Quelltabelle.png (3.31 KiB) 2082 mal betrachtet
Diese wird jetzt abgefragt.
Code: Alles auswählen
SELECT "Namen_ID",
SUM("1_bis3") "1_bis3",
SUM("1_3_42") "1_3_42",
SUM("1_ab43") "1_ab43",
SUM("2_bis3") "2_bis3",
SUM("2_3_42") "2_3_42",
SUM("2_ab43") "2_ab43",
SUM("3_bis3") "3_bis3",
SUM("3_3_42") "3_3_42",
SUM("3_ab43") "3_ab43"
FROM
(
SELECT "Namen_ID",
CASE WHEN "01" BETWEEN 0 AND 2 THEN "01" ELSE 0 END AS "1_bis3",
CASE WHEN "01" BETWEEN 3 AND 42 THEN "01" ELSE 0 END AS "1_3_42",
CASE WHEN "01" >42 THEN "01" ELSE 0 END AS "1_ab43",
CASE WHEN "02" BETWEEN 0 AND 2 THEN "02" ELSE 0 END AS "2_bis3",
CASE WHEN "02" BETWEEN 3 AND 42 THEN "02" ELSE 0 END AS "2_3_42",
CASE WHEN "02" >42 THEN "02" ELSE 0 END AS "2_ab43",
CASE WHEN "03" BETWEEN 0 AND 2 THEN "03" ELSE 0 END AS "3_bis3",
CASE WHEN "03" BETWEEN 3 AND 42 THEN "03" ELSE 0 END AS "3_3_42",
CASE WHEN "03" >42 THEN "03" ELSE 0 END AS "3_ab43"
FROM "Tab_Summe"
)
GROUP BY "Namen_ID"
mit dem Ergebnis:

- Zieltabelle.png (6.07 KiB) 2082 mal betrachtet
Du siehst, dass das Abfrageergebnis schon der Tabellenstruktur von "Namen" entspricht. (ich gehe hier von einem vereinfachten Beispiel aus, Du besitzt mehr Spalten in der Tabelle "Namen", die Du natürlich berücksichtigen musst)
Stellst Du unter Extras/SQL obigem Code noch ein
voran, dann wird das Ergebnis in die Tabelle "Namen" geschrieben.
Allerdings frage ich mich, ob letzter Schritt wirklich notwendig ist. Du kennst die Möglichkeiten von Ansichten/Views?
Ein rechter Mausklick auf eine gespeicherte Abfrage bietet Dir "als Ansicht erstellen" an. Das bedeutet. dass das Abfrageergebnis in einen View umgewandelt wird und danach unter Tabellen zur Verfügung steht. Aus meiner Sicht könntest Du darauf zurückgreifen, anstatt ein INSERT durchzuführen.
Wolfgang, versuche am besten, mein Beispiel nachzuvollziehen. Das lässt sich problemlos auf 10 Spalten erweitern. Das Grundprinzip bleibt gleich. Wenn es Fragen gibt, melde Dich.
Wichtig: zur Ausführung des SQL müss "SQL direkt ausführen" aktiviert sein und Tabellennamen, Spaltenbezeichner usw. in Anführungsstrichen stehen!
Viel Erfolg!
Gruß Barlee
Hallo Wolfgang,
das ist gar nicht so schwer.
Da Du das Ergebnis der Abfrage anschließend in eine andere Tabelle mittels INSERT überführen möchtest, sollte sich das Abfrageergebnis an der Struktur der "Zieltabelle" orientieren.
Folgendes Beispiel. Ausgangstabelle (Tab_Summe genannt):
[attachment=1]Quelltabelle.png[/attachment]
Diese wird jetzt abgefragt.
[code]
SELECT "Namen_ID",
SUM("1_bis3") "1_bis3",
SUM("1_3_42") "1_3_42",
SUM("1_ab43") "1_ab43",
SUM("2_bis3") "2_bis3",
SUM("2_3_42") "2_3_42",
SUM("2_ab43") "2_ab43",
SUM("3_bis3") "3_bis3",
SUM("3_3_42") "3_3_42",
SUM("3_ab43") "3_ab43"
FROM
(
SELECT "Namen_ID",
CASE WHEN "01" BETWEEN 0 AND 2 THEN "01" ELSE 0 END AS "1_bis3",
CASE WHEN "01" BETWEEN 3 AND 42 THEN "01" ELSE 0 END AS "1_3_42",
CASE WHEN "01" >42 THEN "01" ELSE 0 END AS "1_ab43",
CASE WHEN "02" BETWEEN 0 AND 2 THEN "02" ELSE 0 END AS "2_bis3",
CASE WHEN "02" BETWEEN 3 AND 42 THEN "02" ELSE 0 END AS "2_3_42",
CASE WHEN "02" >42 THEN "02" ELSE 0 END AS "2_ab43",
CASE WHEN "03" BETWEEN 0 AND 2 THEN "03" ELSE 0 END AS "3_bis3",
CASE WHEN "03" BETWEEN 3 AND 42 THEN "03" ELSE 0 END AS "3_3_42",
CASE WHEN "03" >42 THEN "03" ELSE 0 END AS "3_ab43"
FROM "Tab_Summe"
)
GROUP BY "Namen_ID"
[/code]
mit dem Ergebnis:
[attachment=0]Zieltabelle.png[/attachment]
Du siehst, dass das Abfrageergebnis schon der Tabellenstruktur von "Namen" entspricht. (ich gehe hier von einem vereinfachten Beispiel aus, Du besitzt mehr Spalten in der Tabelle "Namen", die Du natürlich berücksichtigen musst)
Stellst Du unter Extras/SQL obigem Code noch ein
[code]INSERT INTO "Namen"[/code]
voran, dann wird das Ergebnis in die Tabelle "Namen" geschrieben.
Allerdings frage ich mich, ob letzter Schritt wirklich notwendig ist. Du kennst die Möglichkeiten von Ansichten/Views?
Ein rechter Mausklick auf eine gespeicherte Abfrage bietet Dir "als Ansicht erstellen" an. Das bedeutet. dass das Abfrageergebnis in einen View umgewandelt wird und danach unter Tabellen zur Verfügung steht. Aus meiner Sicht könntest Du darauf zurückgreifen, anstatt ein INSERT durchzuführen.
Wolfgang, versuche am besten, mein Beispiel nachzuvollziehen. Das lässt sich problemlos auf 10 Spalten erweitern. Das Grundprinzip bleibt gleich. Wenn es Fragen gibt, melde Dich.
Wichtig: zur Ausführung des SQL müss "SQL direkt ausführen" aktiviert sein und Tabellennamen, Spaltenbezeichner usw. in Anführungsstrichen stehen!
Viel Erfolg!
Gruß Barlee