Seite 1 von 1
Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?
Verfasst: Di, 23.02.2010 14:32
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 ?
Re: Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?
Verfasst: Di, 23.02.2010 15:52
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)?

Re: Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?
Verfasst: Di, 23.02.2010 16:08
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
Re: Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?
Verfasst: Di, 23.02.2010 16:50
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.
Re: Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?
Verfasst: Di, 23.02.2010 17:56
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
Re: Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?
Verfasst: Di, 23.02.2010 18:30
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.
Re: Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?
Verfasst: Di, 23.02.2010 18:43
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
Re: Zeile mit 6 Spalten (J/N) Anzahl Ja einträge anzeigen?
Verfasst: Di, 23.02.2010 20:21
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.