我怎么能总结一下列?

时间:2016-06-16 11:36:55

标签: sql-server tsql

有一个观点如下:

select t1.PID,t2.*,1 AccessCount 
from Table1 t1 inner join Table2 t2 on t1.id=t2.id

此处,SQL服务器默认将AccessCount列的数据类型视为“int”。

但是当我在该列上应用sum运算符时,它表示 Sum运算符不能应用于operand1的位类型,并且这在所有服务器系统上都不可重现。

服务器系统配置对查询执行有影响吗?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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

此查询首先将值转换为int,然后将该值的所有值转换为SUM。