Eu tenho um banco de dados que Manifest
contém vários Inventory
itens. Cada item de inventário possui um número inteiro NetWeight
.
Eu tenho a seguinte consulta:
SELECT
ID,
(SELECT SUM(NetWeight) FROM Inventory WHERE Inventory.ManifestID = Manifest.ID)
FROM Manifest
que está lançando uma exceção: Arithmetic overflow error converting expression to data type int.
e não entendo o porquê.
Recentemente, a Inventory
tabela excedeu o tamanho de um int se você SUM(NetWeight)
não tiver filtro.
No entanto, sei e verifiquei que não existem Manifest
valores com valor superior a 100.000 para essa subconsulta.
Se eu anexar WHERE ID > 0
ao final da consulta, tudo funcionará bem. Todos Manifest
os IDs são maiores que 0, então isso é teoricamente equivalente a não ter nenhum filtro.
Eu sei que posso simplesmente convertê-lo para a bigint
e continuar meu dia, mas quero entender por que o SQL está transbordando.
Está somando internamente toda a tabela de inventário por algum motivo?
Qualquer visão seria muito apreciada.
Plano de consulta estimado: https://www.brentozar.com/pastetheplan/?id=BJETnFUpa