我有一个这样的表:
**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
当a
或b
中至少有一个为True时 a or b
为True,否则为False。因此,您可以直接将其简化为获取每列的最大值,正如@Joachim也指出的那样。