Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?

Beitrag von MikeRo »

Hallo, ich habe eine Tabelle die wie folgt aussieht.

Wert A | Wert B | Wert C | Wert D | Wert E | Wert F | extra Spalte ? "Anzahl ja"

ja | ja | ja |nein | | ja | 4
usw....


mal ist ein ja mal ein nein und mal nichts eingetragen.

Ist es möglich eine SQL Abfrage zu machen die mir in einer extra Spalte hinter jeder Zeile einfach nur die Anzahl von ja's in der ganzen Zeile anzeigt ?
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?

Beitrag von DPunch »

Aloha

Auf die Schnelle:

Code: Alles auswählen

SELECT *,
(
	(CASE WHEN "Wert A" = False THEN 0 ELSE 1 END) +
	(CASE WHEN "Wert B" = False THEN 0 ELSE 1 END) +
	(CASE WHEN "Wert C" = False THEN 0 ELSE 1 END) +
	(CASE WHEN "Wert D" = False THEN 0 ELSE 1 END) +
	(CASE WHEN "Wert E" = False THEN 0 ELSE 1 END) +
	(CASE WHEN "Wert F" = False THEN 0 ELSE 1 END)
) AS "Anzahl Ja's"
FROM "MeineTabelle"

Ist das eigentlich nur bei mir so, dass sich in einer HSQLDB in einer Abfrage nicht auf "True" überprüfen lässt (OOo 3.11)? :shock:
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?

Beitrag von MikeRo »

Ich mache das ganze ja mit Base, habe den Befehl mal angepasst, aber er geht nicht.
SELECT * ,
(
(CASE WHEN "Auftrag bestätigt" = 'ja' THEN 1 ELSE 0 END) +
(CASE WHEN "Lieferschein bestätigt" = 'ja' THEN 1 ELSE 0 END) +
(CASE WHEN "Fotos übermittelt" = 'ja' THEN 1 ELSE 0 END) +
(CASE WHEN "Stempellisten übermittelt" = 'ja' THEN 1 ELSE 0 END) +
(CASE WHEN "Eingangsrechnung erhalten" = 'ja' THEN 1 ELSE 0 END) +
(CASE WHEN "Originale erhalten" = 'ja' THEN 1 ELSE 0 END)
) AS "Anzahl Ja's"
FROM "Kontrolle"
Und direkt noch eine Frage ist Groß und Kleinschreibung egal ?
Ja oder ja oder JA
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?

Beitrag von DPunch »

Ok, ich bin (wie auch immer ich darauf gekommen bin) davon ausgegangen, dass Du in der Tabelle mit dem Datentyp Boolean (ja/nein) arbeitest.

Beim zweiten hinschauen sieht es eher so aus, als würdest Du mit Strings arbeiten.
In diesem Falle ist unbedingt auf die Groß- / Kleinschreibung zu achten.

Code: Alles auswählen

SELECT * ,
(
(CASE WHEN Lower("Auftrag bestätigt") = 'ja' THEN 1 ELSE 0 END) +
(CASE WHEN Lower("Lieferschein bestätigt") = 'ja' THEN 1 ELSE 0 END) +
(CASE WHEN Lower("Fotos übermittelt") = 'ja' THEN 1 ELSE 0 END) +
(CASE WHEN Lower("Stempellisten übermittelt") = 'ja' THEN 1 ELSE 0 END) +
(CASE WHEN Lower("Eingangsrechnung erhalten") = 'ja' THEN 1 ELSE 0 END) +
(CASE WHEN Lower("Originale erhalten") = 'ja' THEN 1 ELSE 0 END)
) AS "Anzahl Ja's"
FROM "Kontrolle"
Zusätzlich noch oben in der Symbolleiste "SQL-Kommando direkt ausführen" aktivieren.
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?

Beitrag von MikeRo »

Oh danke =) Habe es auch auf BOOLEAN geändert, vereinfacht die Sache doch extrem.... Bin halt noch ein Neuling was das angeht.

jetzt habe ich noch eine Frage,

Kann man irgendwie Eine Anzeige machen die aus 3 Spalten eine Ansicht in einer neuen macht ?

Habe eine Tabelle mit

ID | Vorname | Nachname

01 | Max | Mustermann

Möchte jetzt in eine neue Spalte

ID + Vorname + Nachname

01 Max Mustermann

haben... Denn wenn ich es addiere macht er keine Leerstellen dazwischen
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?

Beitrag von DPunch »

Aloha

Code: Alles auswählen

SELECT
("ID" || ' ' || "Vormane" || ' ' || "Nachname") AS "MeinNeuerSpaltenname"
FROM "MeineTabelle"
Das || bewirkt dabei die Stringverknüpfung, das ' ' setzt eine Leerstelle.
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?

Beitrag von MikeRo »

DPunch hat geschrieben:Aloha

Code: Alles auswählen

SELECT
("ID" || ' ' || "Vormane" || ' ' || "Nachname") AS "MeinNeuerSpaltenname"
FROM "MeineTabelle"
Das || bewirkt dabei die Stringverknüpfung, das ' ' setzt eine Leerstelle.
Super tausend Dank =)

ein letztes noch, die ID ist in der Tabelle als 01 gespeichert, aber wird bei der abfrage nur als 1 angezeigt
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?

Beitrag von DPunch »

Das ist nicht ohne Weiteres machbar.

Ich gehe davon aus, dass das Feld "ID" als Integer mit dem Format "Führende Nullen" in der Tabelle gespeichert ist.
Da bei einer Stringverknüpfung wie Deiner der "echte" Wert (Wert von 01 = 1) des Feldes verwendet wird ohne Rücksicht auf die Formatierung, gehen die führenden Nullen verloren.

Als Workaround würde zwar

Code: Alles auswählen

SELECT
(Right('00' || "ID",2) || ' ' || "Vorname" || ' ' || "Nachname") AS "MeinNeuerSpaltenname"
FROM "MeineTabelle"
funktionieren, allerdings auch nur solange Deine IDs nur zweistellig sind.
Antworten