相关疑难解决方法(0)

操作数数据类型void类型对sum运算符无效

我对使用null有疑问.

如果我运行此查询

SELECT SUM(x)
FROM (SELECT NULL AS x) AS DerivedTable
Run Code Online (Sandbox Code Playgroud)

我收到错误消息

"操作数数据类型void类型对sum运算符无效."

但是,如果我创建一个具有可空字段的表并在sum聚合中使用它,它将忽略NULL值并基本上将所有其余记录相加.

CREATE TABLE #temp1(x int)
insert into #temp values (NULL),(3),(5)

SELECT SUM(x) FROM #temp1 
Run Code Online (Sandbox Code Playgroud)

结果是8.

这个有合理的解释吗?是不是因为NULL的数据类型还没有在派生表的查询中声明但是用temp表声明了?另外,我真的想知道从表或派生表运行时是否有办法产生此错误消息,就像第二个#temp1示例一样.从表或表表达式运行时产生此错误消息的任何示例都非常受欢迎.

谢谢你们

sql sql-server sql-server-2008 sql-server-2008-r2

6
推荐指数
1
解决办法
8516
查看次数