J'ai un tas de colonnes avec des valeurs oui/non. Ceux-ci sont identifiés par leur longueur étant 3:Comment utiliser les résultats d'une requête en tant que colonnes WHERE dans un autre?
SELECT colname
FROM syscat.columns
WHERE tabname='CL'
AND length = 3
J'aimerais compter toutes les lignes qui ont un oui pour l'une de ces colonnes.
Donc, normalement, je ferais:
SELECT COUNT(*)
FROM CL
WHERE c1=yes or c2=yes or c3=yes #...
Mais je me demande s'il y a un moyen d'appliquer les noms de colonnes dans la clause WHERE d'une autre requête. Quelque chose comme ceci:
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"
Ce que je suis à la recherche est un nombre de lignes où une colonne 3 longueur a un « oui ».
Remarque: J'utilise db2 sur bluemix, mais toute information générale à ce sujet serait utile.
Votre requête "normalement" est la bonne façon de procéder. Vous pouvez faire une [** requête dynamique **] (https://stackoverflow.com/questions/6785302/how-to-execute-an-sql-string-in-db2) en utilisant les informations de "syscat.columns" Est-ce cela que vous demandez? –