我有一张表格,显示一个人回复调查的次数。人的id和survey id是varchar(10)的。已回复的列是int无0响应或1响应的 ,并且databaseId是varchar(2)。它看起来像这样:
personId surveyId replied databaseId
0001 1366 0 3
0002 2243 1 1
0003 6693 0 2
0004 1246 0 1
0045 2740 1 4
.... .... ... ...
INSERT我正在尝试获取有关调查响应率的一些汇总统计信息,但是当我尝试将结果放入新表时遇到错误。新表的格式为:
surveyId respRate
1366 0.00000
2243 0.00832
2244 0.02377
8875 0.01534
.... ...
哪里surveyId是varchar(20)和respRate是一个decimal(5,5)。当我使用以下内容尝试插入新表时:
insert into summaryTable
(surveyId, meanrr)
SELECT t1.surveyId
,(sum(t1.replied)*1.0 / count(replied)*1.0) meanrr
FROM (select * from table1
where databaseid in ('1','2','3')) t1
where surveyId is not null
group by surveyId
我收到以下错误消息:
Msg 8115, Level 16, State 8, Line 8
Arithmetic overflow error converting numeric to data type numeric.
我对此进行了一些研究,除了增加目标列的大小(即decimal(5,5)--> decimal(10,10))之外没有发现太多,但是当我尝试这个时,我得到了相同的响应。
如果我只是尝试不使用该insert into部分的查询部分,它似乎可以工作(或者我只是没有收到错误消息)。
还有其他建议吗?