SQL选择列上布尔值的最大值



我的表中有两个布尔类型的列。我想根据以下条件对这两列进行选择:每列:

  • 如果至少有一行=1,我将@result=1
  • 如果没有行=1,我将@result=0
CREATE TABLE test
(
active1 bit,
active2 bit,
)
INSERT INTO test(active1 , active2 )
VALUES
(0,0),
(1;0),
(0.0);

它必须返回@result1=1和@result2=0,我想在一个查询中完成此操作,我尝试了MAX,但它不起作用:

declare @result1 bit
declare @result1 bit
select 
@result1= max(active1), @result2= max(active2)
from test

请帮助

不能对bit列执行聚合,需要将它们强制转换为合适的数据类型

declare @result1 bit, @result2 bit;
with t as (
select Convert(tinyint, active1) active1, Convert(tinyint, active2) active2
from test
)
select @result1=max(active1), @result2= max(active2)
from t;
select @result1 Result1, @result2 Result2;

(还要注意,位列是而不是布尔值(

最新更新