ich habe mit vielen CASE-Konstrukten eine Kreuztabellenabfrage erstellt, die für 50 Merkmale 50 Spalten nach diesem Schema erzeugt:
avg(CASE id_merkmal WHEN 1 THEN merkwert ELSE NULL END) AS merk1,
avg(CASE id_merkmal WHEN 2 THEN merkwert ELSE NULL END) AS merk2
usw.
Je nachdem wie ich mit Bedingungen die Anzahl der Zeilen einschränke sind dabei aber viele der 50 Spalten einfach leer, weil die Merkmale dort nicht erhoben wurden.
Gibt es denn eine Möglichkeit diese leeren Spalten in der Abfrage direkt auszublenden?
Ich dachte daran, daß ich vielleicht die 50 Spalten Abfrage einer anderen Abfrage unterordne, der ich dann irgendwie mitteile, daß sie nur die Spalten in den SELECT Befehl nehmen soll, die nicht Null sind.
Ja, auf diesem Weg geht das. Dynamisches SQL, kannst Du innerhalb einer function generieren und mit execute ausführen. Aber ich würde nicht empfehlen, für Dein Szenario dies zu versuchen, ist zu schmutzig. Z.B. ist dann nicht bekannt, welche Struktur (Spalten) das Ergebniss hat etc.