sql – 操作数数据类型void类型对sum运算符无效
发布时间:2020-12-12 08:44:58 所属栏目:MsSql教程 来源:网络整理
导读:我对使用null有疑问. 如果我运行此查询 SELECT SUM(x)FROM (SELECT NULL AS x) AS DerivedTable 我收到错误消息 “Operand data type void type is invalid for sum operator.” 但是,如果我创建一个具有可空字段的表并在sum聚合中使用它,它将忽略NULL值并基
我对使用null有疑问.
如果我运行此查询 SELECT SUM(x) FROM (SELECT NULL AS x) AS DerivedTable 我收到错误消息
但是,如果我创建一个具有可空字段的表并在sum聚合中使用它,它将忽略NULL值并基本上将所有其余记录相加. CREATE TABLE #temp1(x int) insert into #temp values (NULL),(3),(5) SELECT SUM(x) FROM #temp1 结果是8. 这个有合理的解释吗? 谢谢你们 解决方法这确实是因为在派生表方案中无法推断列的类型.如果更改语句并在列上显式使用类型,则select将起作用. SELECT SUM(x) FROM (SELECT CAST(NULL AS INTEGER) AS x) AS DerivedTable 以及可以推断出类型的以下语句 SELECT SUM(x) FROM (SELECT NULL AS x UNION SELECT 1) AS DerivedTable SQL Fiddle 这也可以回答你的第二个问题.由于无法在不声明类型的情况下创建表,因此无法生成会生成该特定错误消息的语句. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |