ProductName、Qty、およびその他の列を返すビューがあります
次のように定義されます。
SELECT ProductName, Qty, /* etc. */
FROM SomeConcreteTable
SomeConcreteTableとを定義ProductNameします。nvarchar(40)Qtyfloat
SELECT ProductName, SUM(Qty)
FROM MyView
GROUP BY ProductName
これにより、エラーが発生します
オペランドのデータ型 nvarchar は合計演算子に対して無効です
ビューが行を返さない場合、行をWHERE返すようにビューの条件を変更してもエラーは発生しません。
SELECT ProductName, SUM(COALESCE(vStarts.LotQty, 0))
FROM MyView
GROUP BY ProductName
ビューが行を返すかどうかに関係なく機能します。
この投稿で、Lieven Keersmaekers は、クエリでの匿名型の使用には、型のカウントが推測されないため、同じ問題があったと述べています。
理にかなっています。
ただし、私の場合、型は推論されるべきではありません-それらはテーブルからのものです。
そのようなよく悪用される質問をするつもりはありませんが、これはバグですか?
合計が null 許容 float (varchar ではなく) に対するものである場合に、行がない場合の合計でこのエラーが発生するという予期しない動作のようです。
Microsoft SQL Server 2012 (SP1) - 11.0.3482.0 (X64)