获取位列所有行的"OR"结果



我有一个这样的表:

**ID**  | **read** | **edit** | **delete**|
  1         true       false    false
  2         false      false     true 
  3         true       false     true 
  4          true       false     false

我想"OR"行,最后创建一个行,其中包含或结果。有没有办法不使用for循环呢?最好的方法是什么?

您可以将位转换为整数,然后使用MAX获得最大的值;

SELECT MAX(CAST([read]   AS INT)) [read],
       MAX(CAST([edit]   AS INT)) [edit], 
       MAX(CAST([delete] AS INT)) [delete]
FROM mytable;

试试这个:

select 
cast(max(cast([read] as int)) as bit) as [overall_read],
cast(max(cast([edit] as int)) as bit) as [overall_edit],
cast(max(cast([delete] as int)) as bit) as [overall_delete]
from tbl
ab中至少有一个为True时

a or b为True,否则为False。因此,您可以直接将其简化为获取每列的最大值,正如@Joachim也指出的那样。

最新更新