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中不能对abit
进行求和。
SELECT Id,
Min(Cast(Bitvalue AS TINYINT))
FROM yourtable
GROUP BY Id