Sql server 我如何计算一个位列的和?

Sql server 我如何计算一个位列的和?,sql-server,tsql,Sql Server,Tsql,有一种看法如下: select t1.PID,t2.*,1 AccessCount from Table1 t1 inner join Table2 t2 on t1.id=t2.id 在这里,AccessCount列的数据类型在默认情况下被SQL server视为“int” 但当我在该列上应用求和运算符时,它表示不能在操作数1的位类型上应用求和运算符,并且这在所有服务器系统上都是不可复制的 服务器系统配置对查询执行是否有任何影响?运行下面提到的查询以解决问题 SELECT SUM(CONV

有一种看法如下:

select t1.PID,t2.*,1 AccessCount 
from Table1 t1 inner join Table2 t2 on t1.id=t2.id
在这里,
AccessCount
列的数据类型在默认情况下被SQL server视为“
int

但当我在该列上应用求和运算符时,它表示不能在操作数1的位类型上应用求和运算符,并且这在所有服务器系统上都是不可复制的


服务器系统配置对查询执行是否有任何影响?

运行下面提到的查询以解决问题

SELECT SUM(CONVERT(INT, AccessCount)) FROM Table1

此查询将首先将值转换为int,然后对列的所有值求和。

运行下面提到的查询以解决您的问题

SELECT SUM(CONVERT(INT, AccessCount)) FROM Table1
U can use these three methods  
    DECLARE @TEST TABLE (GROUP_ID INTEGER, STATUS BIT)
    INSERT INTO @TEST
    SELECT 1, 1 UNION ALL SELECT 1, 0 UNION ALL
    SELECT 2, 1 UNION ALL SELECT 2, 1



    SELECT
            SUM(CAST(STATUS AS INT)) AS '1ST METHOD',
            SUM(CASE(STATUS) WHEN 1 THEN 1 ELSE 0 END) AS '2ND METHOD',
            COUNT(NULLIF(STATUS,0)) AS '3RD METHOD'
    FROM 
            @TEST

此查询将首先将值转换为int,然后对列的所有值求和。

服务器配置与清除查询错误消息有什么关系?此外,没有“默认”类型。如果错误显示类型为位,则类型为位。发布实际的查询和表架构。这一观点毫无帮助。如果不同服务器之间的行为不同,则意味着表是不同的。给定的查询永远不会产生您描述的错误,因为它不包含
SUM
。而且
select1accesscount
将始终生成类型为
INT
的列,而不会生成
,因此简单地将其包装在
和中也不会产生任何效果。张贴给您带来麻烦的实际代码,以及您访问结果的方式。对于视图,请始终首先尝试调用
sp_refreshview
,以确保元数据未过期。Re“服务器系统配置是否对查询执行有任何影响?”:我不知道有任何设置/会影响此设置。原因是您在不同系统上的查询存在差异。服务器配置与清除查询错误消息有什么关系?此外,没有“默认”类型。如果错误显示类型为位,则类型为位。发布实际的查询和表架构。这一观点毫无帮助。如果不同服务器之间的行为不同,则意味着表是不同的。给定的查询永远不会产生您描述的错误,因为它不包含
SUM
。而且
select1accesscount
将始终生成类型为
INT
的列,而不会生成
,因此简单地将其包装在
和中也不会产生任何效果。张贴给您带来麻烦的实际代码,以及您访问结果的方式。对于视图,请始终首先尝试调用
sp_refreshview
,以确保元数据未过期。Re“服务器系统配置是否对查询执行有任何影响?”:我不知道有任何设置/会影响此设置。原因是您在不同系统上的查询存在差异。您可以使用这些查询吗
U can use these three methods  
    DECLARE @TEST TABLE (GROUP_ID INTEGER, STATUS BIT)
    INSERT INTO @TEST
    SELECT 1, 1 UNION ALL SELECT 1, 0 UNION ALL
    SELECT 2, 1 UNION ALL SELECT 2, 1



    SELECT
            SUM(CAST(STATUS AS INT)) AS '1ST METHOD',
            SUM(CASE(STATUS) WHEN 1 THEN 1 ELSE 0 END) AS '2ND METHOD',
            COUNT(NULLIF(STATUS,0)) AS '3RD METHOD'
    FROM 
            @TEST