假设我们有一个带有 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
我在这里所做的,因为没有聚合函数来乘以结果,实际上是将记录总数与位列的整数表示的总和进行比较。如果它们相等,则没有“错误”,因此它可以作为它们之间的 AND 操作。
OR 是从列中获取 MAX,这非常简单。
唯一的问题是,这特别难看,应该用火杀死。有什么优雅、适当的方法可以做到这一点吗?