我有一张表格,显示一个人回复调查的次数。人的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
部分的查询部分,它似乎可以工作(或者我只是没有收到错误消息)。
还有其他建议吗?