queries - where condition sql server
SQL Server: error de desbordamiento aritmético que convierte la expresión al tipo de datos int (5)
¿Es el problema con SUM(billableDuration)
? Para averiguarlo, intente comentar esa línea y ver si funciona.
Podría ser que la suma esté superando el máximo int
. Si es así, intente reemplazarlo con SUM(CAST(billableDuration AS BIGINT))
.
Estoy recibiendo este error
msg 8115, nivel 16, estado 2, línea 18
Error de desbordamiento aritmético que convierte la expresión al tipo de datos int.
con esta consulta SQL
DECLARE @year VARCHAR(4);
DECLARE @month VARCHAR(2);
-- START OF CONFIGURATION SECTION
-- THIS IS THE ONLY SECTION THAT SHOULD BE MODIFIED
-- SET THE YEAR AND MONTH PARAMETERS
SET @year = ''2013'';
SET @month = ''3''; -- 1 = January.... 12 = Decemeber.
-- END OF CONFIGURATION SECTION
DECLARE @startDate DATE
DECLARE @endDate DATE
SET @startDate = @year + ''-'' + @month + ''-01 00:00:00'';
SET @endDate = DATEADD(MONTH, 1, @startDate);
SELECT
DATEPART(YEAR, dateTimeStamp) AS [Year]
, DATEPART(MONTH, dateTimeStamp) AS [Month]
, COUNT(*) AS NumStreams
, [platform] AS [Platform]
, deliverableName AS [Deliverable Name]
, SUM(billableDuration) AS NumSecondsDelivered
FROM
DeliveryTransactions
WHERE
dateTimeStamp >= @startDate
AND dateTimeStamp < @endDate
GROUP BY
DATEPART(YEAR, dateTimeStamp)
, DATEPART(MONTH, dateTimeStamp)
, [platform]
, deliverableName
ORDER BY
[platform]
, DATEPART(YEAR, dateTimeStamp)
, DATEPART(MONTH, dateTimeStamp)
, deliverableName
Cambiar SUM(billableDuration) AS NumSecondsDelivered
to
sum(cast(billableDuration as bigint))
o
sum(cast(billableDuration as numeric(12, 0)))
acuerdo a su necesidad.
El tipo resultante de la expresión de suma es el mismo que el tipo de datos utilizado. Lanza un error en el momento de desbordamiento. Por lo tanto, convertir la columna en un tipo de datos de mayor capacidad y luego utilizar la operación Suma funciona bien.
Por mi parte, este error provino del tipo de datos "INT" en la columna de valores nulos. El error se resuelve simplemente cambiando los datos de un tipo a varchar.
SELECT
DATEPART(YEAR, dateTimeStamp) AS [Year]
, DATEPART(MONTH, dateTimeStamp) AS [Month]
, COUNT(*) AS NumStreams
, [platform] AS [Platform]
, deliverableName AS [Deliverable Name]
, SUM(billableDuration) AS NumSecondsDelivered
Suponiendo que su texto citado sea el texto exacto, una de estas columnas no puede hacer los cálculos matemáticos que desea. Haga doble clic en el error y se resaltará la línea que está causando los problemas (si es diferente de lo que está publicado, puede que no esté arriba); Probé su código con las variables y no hubo ningún problema, lo que significa que una de estas columnas (de la que no sabemos más información específica) está creando este error.
Una de sus expresiones necesita ser convertida / convertida en un int para que esto pase, que es el significado de Arithmetic overflow error converting expression to data type int
.
declare @d real
set @d=1.0;
select @d*40000*(192+2)*20000+150000