Проблема, с которой вы сталкиваетесь, заключается в том, что вы переполняете допустимое значение 32-разрядного числа (INT); если вы приведете / преобразуете в 64-битное число (BIGINT) и вернете этот тип данных, проблема будет исправлена. Подтверждение концепции, показывающее проблему:
DECLARE @BigNumber INT=2000000000
select CONVERT(BIGINT,@BigNumber) + CONVERT(BIGINT,@BigNumber) --returns 4,000,000,000
select (@BigNumber + @BigNumber) --errors with "Arithmetic overflow error converting expression to data type int."
НО , сделайте себе одолжение и используйте вместо этого вид. Такие скаляры ужасны для производительности в отчетах. Скалярные функции никогда не должны использоваться, если они просто не выполняют вычисления, основанные на входных значениях (то есть не затрагивая базовые, постоянные данные).
CREATE VIEW dbo.v_StudioProfits
AS
SELECT
StudioName,
SUM(CONVERT(BIGINT,FilmBoxOfficeDollars) - CONVERT(BIGINT,FilmBudgetDollars)) AS [Profit]
FROM Film
INNER JOIN Studio ON Film.FilmStudioID = Studio.StudioID
GROUP BY StudioName
GO
SELECT * FROM dbo.v_StudioProfits WHERE StudioName='Dreamworks'
Релевантно чтение для типов данных SQL Server. В частности, целочисленные типы данных .