SQL 服务器:数据类型问题

SQL Server: Issues with data type

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];

以上查询产生错误:

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

pa.Actions_Loggedpi.Impressions_Served 都是整数,结果是小数。是这个问题吗?

表格是 圆周率:

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

试试这个查询

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];

SUM 中的表达式类型决定了 return 类型。

尝试以下操作:

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];