2015-06-23 4 views
2
SELECT pa.[type], (SUM(pa.Actions_Logged)/SUM(pi.Impressions_Served)) AS ActionRates 
from Performance_Actions pa 
INNER JOIN Performance_Impressions pi 
ON pa.Alternative = Pi.Alternative 
GROUP BY pa.[type]; 

Этот запрос генерирует ошибку:SQL Server: Проблемы, связанные с типом данных

Lookup Error - SQL Server Database Error: Arithmetic overflow error converting expression to data type int. 

Оба pa.Actions_Logged и pi.Impressions_Served являются INT и результат будет десятичным. Это проблема?

Таблицы пи:

Date  Alternative Impressions_Served 
05/04/2015  x   544432 
05/04/2015  x   545990 
18/04/2015  y   343325 
06/04/2015  z   591316 
06/04/2015  y    2 

ра:

Date  Alternative Actions_Logged Type 
05/04/2015  x   33   landing 
01/04/2015  y    3   conversion 
06/04/2015  k    8   landing 
01/04/2015  x    3   conversion 
18/04/2015  y    3   landing 
+0

какие типы данных '' Actions_Logged' и Impressions_Served' –

+0

@AmeyaDeshpande Оба внутр. –

ответ

1

Тип выражения в SUM определяет тип возвращаемого значения.

Попробуйте следующее:

SELECT pa.[type], (SUM(CAST(pa.Actions_Logged as BIGINT))/SUM(CAST(pi.Impressions_Served as BIGINT))) AS ActionRates 
from Performance_Actions pa 
INNER JOIN Performance_Impressions pi 
ON pa.Alternative = Pi.Alternative 
GROUP BY pa.[type]; 
+0

Работает сейчас Thabk you. В случае, если мне нужно, чтобы результат был процентным, я мог бы изменить это дальше? –

+0

Ваше приветствие. Да, конечно – Marusyk

0

Попробуйте этот запрос,

SELECT pa.[type], (isnull(SUM(pa.Actions_Logged),0)/isnull(SUM(pi.Impressions_Served),0)) AS ActionRates 
from Performance_Actions pa 
INNER JOIN Performance_Impressions pi 
ON pa.Alternative = Pi.Alternative 
GROUP BY pa.[type]; 
+0

Я по-прежнему получаю ту же ошибку. –

Смежные вопросы