私はyes/noの値を持つ列がたくさんあります。これらは、その長さは3であることによって識別されます問合せの結果を別の列のWHERE列として使用する方法は?
SELECT colname
FROM syscat.columns
WHERE tabname='CL'
AND length = 3
私は、これらの列のいずれかのためにイエスを持つすべての行をカウントしたいと思います。
だから、通常は私がやるだろう:
SELECT COUNT(*)
FROM CL
WHERE c1=yes or c2=yes or c3=yes #...
しかし、別のクエリのWHERE句でそれらの列名を適用する方法がある場合、私は思ったんだけど。このようなもの:
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"
私が探しているのは、3長の列に「はい」がある行の数です。
注:私はbluemixでdb2を使用していますが、これに関する一般的な情報は役に立ちます。
あなたは動的SQLを使用する必要がありますが、あなたはIN
述語を使用して、それを簡単にすることができます。このため
あなたの「通常の」クエリは、移動する方法です。 "syscat.columns"の情報を使用して[**動的クエリ**](https://stackoverflow.com/questions/6785302/how-to-execute-an-sql-string-in-db2)あなたが求めているのはそれですか? –