Sql server 聚合位列模拟与运算符

Sql server 聚合位列模拟与运算符,sql-server,aggregate-functions,and-operator,Sql Server,Aggregate Functions,And Operator,我有一些行,我必须聚合,放入一个小列。我给你举个例子。。。我有一组数据如下: Id | BitValue ---------------- 1 | 1 1 | 1 2 | 0 3 | 1 3 | 0 我希望得到的结果是: Id | BitValue ---------------- 1 | 1 <- = (1 AND 1) 2 | 0 3 | 0 &l

我有一些行,我必须聚合,放入一个小列。我给你举个例子。。。我有一组数据如下:

Id   |  BitValue
----------------
1    |     1 
1    |     1
2    |     0
3    |     1
3    |     0      
我希望得到的结果是:

Id   |  BitValue
----------------
1    |     1 <- = (1 AND 1)
2    |     0
3    |     0 <- = (1 AND 0)
有人能帮我吗?
谢谢

如果该列中只有1和0,请将
总和
计数
进行比较:

select Id, case when sum(BitValue) < count(Id) then 0 else 1 end as BitValue 
from mytable group by Id;
选择Id,当sum(BitValue)


感谢@Larnu的有用评论。我提出这个问题是为了反映他的担忧。

另一种方法是

SELECT DISTINCT ID, 
    ISNULL((SELECT TOP 1 BitValue FROM TBL T1 WHERE T1.ID=T.ID AND 
    BitValue=0),1) AS  BitValue 
FROM TBL T
这里有一种方法

SELECT Id,
       Min(Cast(Bitvalue AS TINYINT)) * Max(Cast(Bitvalue AS TINYINT))
FROM   yourtable
GROUP  BY Id 
或者为什么不将比特值设置为
min

SELECT Id,
       Min(Cast(Bitvalue AS TINYINT))
FROM   yourtable
GROUP  BY Id 

这两种方法都认为
BitValue
列中不存在空值,作为一种快速提示,如果OP的列
BitValue
存储为
bit
,则需要
转换
值为
tinyint
(或类似)。在SQL Server中不能对
a
bit
进行求和。
SELECT Id,
       Min(Cast(Bitvalue AS TINYINT))
FROM   yourtable
GROUP  BY Id