Cha*_*rns 1 sql-server database-design inferred-type sql-server-2012
我有一个观点,即收益ProductName,Qty以及其他列
定义为:
SELECT ProductName, Qty, /* etc. */
FROM SomeConcreteTable
Run Code Online (Sandbox Code Playgroud)
SomeConcreteTable定义ProductNameasnvarchar(40)和Qtyas float。
SELECT ProductName, SUM(Qty)
FROM MyView
GROUP BY ProductName
Run Code Online (Sandbox Code Playgroud)
这会导致错误
操作数数据类型 nvarchar 对 sum 运算符无效
当视图不返回行时,WHERE修改视图的条件使其返回行时不会出错。
SELECT ProductName, SUM(COALESCE(vStarts.LotQty, 0))
FROM MyView
GROUP BY ProductName
Run Code Online (Sandbox Code Playgroud)
无论视图是否返回行都有效。
在这篇文章中,Lieven Keersmaekers 说在查询中使用匿名类型有同样的问题,因为类型计数无法推断。
说得通。
但是,在我的情况下,不应推断类型——它们来自表。
不要问这样一个经常被滥用的问题,但这是一个错误吗?
当求和针对可空浮点数(而不是 varchar)时,没有行的求和会产生此错误,这似乎是意外行为。
Microsoft SQL Server 2012 (SP1) - 11.0.3482.0 (X64)
你应该先投你的专栏,它会起作用
SELECT SUM(CAST(Qty as int)) // change to desired type, int for example purposes only
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26998 次 |
| 最近记录: |