有一个观点如下:
select t1.PID,t2.*,1 AccessCount
from Table1 t1 inner join Table2 t2 on t1.id=t2.id
此处,SQL服务器默认将AccessCount
列的数据类型视为“int
”。
但是当我在该列上应用sum运算符时,它表示 Sum运算符不能应用于operand1的位类型,并且这在所有服务器系统上都不可重现。
服务器系统配置对查询执行有影响吗?
答案 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。