Ich habe eine Reihe von Spalten mit Ja/Nein-Werten. Diese sind gekennzeichnet durch ihre Länge von 3:Wie verwendet man die Ergebnisse einer Abfrage als die WHERE-Spalten in einem anderen?
SELECT colname
FROM syscat.columns
WHERE tabname='CL'
AND length = 3
Ich möchte alle Zeilen zählen, die ein Ja für jede dieser Spalten haben.
Also normalerweise würde ich tun:
SELECT COUNT(*)
FROM CL
WHERE c1=yes or c2=yes or c3=yes #...
Aber ich frage mich, ob es einen Weg gibt, diese Spaltennamen in der WHERE-Klausel einer anderen Abfrage anzuwenden. Etwas wie folgt aus:
SELECT COUNT(sub.*)
FROM (
SELECT colname
FROM syscat.columns
WHERE tabname='CL'
AND length = 3
) sub
WHERE [sub] = yes #How can I say "The VALUE of each column name from the subquery"
Was ich suche ist eine Anzahl von Zeilen, in denen jede 3-Länge Spalte ein ‚Ja‘ hat.
Hinweis: Ich verwende db2 auf bluemix, aber alle allgemeinen Informationen dazu wären hilfreich.
Ihre "normale" Abfrage ist der Weg zu gehen. Sie können eine [** dynamische Abfrage **] (https://stackoverflow.com/questions/6785302/how-to-execute-an-sql-string-in-db2) mit den Informationen von "syscat.columns" durchführen. ist das was du fragst? –