得到" OR"位列的所有行的结果

时间:2014-08-20 04:19:19

标签: sql sql-server tsql sql-server-2012

我有一张这样的表:

**ID**  | **read** | **edit** | **delete**|

  1         true       false    false

  2         false      false     true 

  3         true       false     true 

  4          true       false     false

我希望“OR”行,最后创建一个包含OR结果的行。没有for循环有没有办法做到这一点?什么是最好的方法 ? (行可能是这么多,我认为循环可能会降低速度)

2 个答案:

答案 0 :(得分:4)

您可以将这些位转换为整数并使用MAX来获得最大值;

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

An SQLfiddle to test with

答案 1 :(得分:3)

试试这个:

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 or ba中至少有一个为真时,

b为真,否则为假。因此,你可以直接减少这一点,以获得每列的最大值,正如@Joachim所指出的那样。