1

ID とビット列を持つテーブルがあるとします。任意の数の行を返すクエリを実行します (この例では ID > 5)。私がやりたいことは、ビット列の結果全体で AND 集計操作を行うことです。私は回避策を見つけましたが、それはきれいではありません:

SELECT 
CASE WHEN COUNT(ID) = SUM(CAST(isTrue AS INT)) THEN 1 ELSE 0 END AS areTrue
FROM Table
WHERE ID > 5

ここで行っているのは、結果を乗算する集計関数がないため、実際にはレコードの総数をビット列の整数表現の合計と比較することです。それらが等しい場合、「false」はないため、それらの間の AND 演算として機能します。

OR は、列から MAX を取得することであり、これは非常に簡単です。

唯一の問題は、これが特に醜く、火で殺す必要があることです。これを行うエレガントで適切な方法はありますか?

4

2 に答える 2