Zellen mit gleichen Inhalten einer Zeile addieren

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Neuling77
*
Beiträge: 16
Registriert: So, 31.08.2008 14:11

Zellen mit gleichen Inhalten einer Zeile addieren

Beitrag von Neuling77 »

Hallo Baseianer!

Bevor ich mich an das im anderen Thread angesprochene und dort bearbeitete Problem heranwage, hätt ich da gern mal noch ein anderes Herausforderüngchen im Zusammenhang meiner im Entstehen begriffenen Datenbank für einen Tafelladen. Wahrscheinlich stehe ich hier wirklich nur auf dem Schlauch, so dass ein ganz knapper Hinweis eines gewieften Base-Anwenders mir unkompliziert die Scheuklappen entfernen kann. Zur Sache:

Pro hilfsbedürftigem Haushalt erstelle ich einen Datensatz, in dem von jedem Mitglied des Haushalts u. a. das Geburtsdatum gespeichert wird. In der Tabelle habe ich Platz für bis zu 9 Personen pro Haushalt vorgesehen. Aus den Geburtsdaten berechne ich über eine Ansicht das jeweilige Alter und schlage die einzelnen Haushaltsmitglieder einer Gruppe zu, nämlich Kind (=1), Erwachsen (=2) oder nicht vorhanden (=0; weil ja nicht jede Familie aus neun Mitgliedern besteht). Im Ergebnis habe ich pro Haushalt eine Tabellenzeile, deren 9-Tupel für eine fünfköpfige Familie mit 2 Erwachsenen und 3 Kindern beispielsweise so aussieht: 2,2,1,1,1,0,0,0,0.

Nun mein Problem: Wie summiere ich diese Zelleninhalte so, dass ich in zwei neuen Spalten je die Erwachsenen und die Kinder zusammenzählen kann. Über CASE WHEN komme ich zwar an die Werte der Zellen und kann diese unterscheiden, aber wie lautet der Befehl, wenn ich für jeden "Treffer" bei Erwachsenen bzw. Kindern den Wert der jeweiligen Spalte um eins erhöhen möchte? (Am Schluss soll aus dem 9-Tupel ein 2-Tupel geworden sein, das - im Beispiel - 2,3 ausgibt.)

Ganz idealer weise würde ich die Ergebnisse dieser Summierung auch schon in der Eingabemaske - als Feedback für den Eingebenden - zurückgeben. Vielleicht ist ja auch das möglich, aber es ist nicht zentral.

Vielen Dank für Eure Mühe und Tipps. Für den anderen Thread werde ich mich bedanken, wenn ich die Vorschläge realisiert habe. (Ich wollte - im Nachhinein betrachtet - Schritt zwei vor dem ersten machen.)
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Zellen mit gleichen Inhalten einer Zeile addieren

Beitrag von Barlee »

Hallo Neuling77,
(Am Schluss soll aus dem 9-Tupel ein 2-Tupel geworden sein, das - im Beispiel - 2,3 ausgibt.)
Wenn Du die Daten in einzelnen Spalten speichern möchtest, dann käme folgendes Konstrukt in Frage.
Im Beispiel stehen die Bezeichner "eins" bis "neun" für die 9 Tupel.

Code: Alles auswählen

SELECT
(CASE WHEN "eins" = 2 THEN 1 else 0 end) + 
(CASE WHEN "zwei" = 2 THEN 1 else 0 end) ...[hier für Spalte "drei" bis "acht"] ...+
(CASE WHEN "neun" = 2 THEN 1 else 0 end) as Anzahl_Erw,
(CASE WHEN "eins" = 1 THEN 1 else 0 end) + 
(CASE WHEN "zwei" = 1 THEN 1 else 0 end) ...[hier für Spalte "drei" bis "acht"] ...+
(CASE WHEN "neun" = 1 THEN 1 else 0 end) as Anzahl_Kind
FROM "[Deine Tabelle]"
!! SQL direkt ausführen muss aktiviert sein.

Gruß Barlee
Neuling77
*
Beiträge: 16
Registriert: So, 31.08.2008 14:11

Re: Zellen mit gleichen Inhalten einer Zeile addieren

Beitrag von Neuling77 »

Super, vielen Dank für Deine Hilfe, Barlee!

Ich hätte nicht gedacht, dass der Befehl zum Summieren einfach "+" lautet.
Antworten