BUG: Precision and Scale Change with SUM or AVG FunctionsID: Q167602
|
BUG #: 15699 (NT: 6.00)
16647 (6.50)
If a SUM or AVG function is applied to a numeric field, the field looses its precision and scale.
Use the CONVERT function to regain the precision and scale.
For example, in a case where a cursor declared to select AVG(<column>) and
fetch fails with error 16923, declare the cursor like the following:
declare cur_test cursor for
select convert(numeric(<precision>,<scale>),AVG(c1))
from table1
Microsoft has confirmed this to be a problem in Microsoft SQL Server versions 6.0 and 6.5. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.
With a limited amount of testing, the SUM function seems to get a precision
of 38 and retains the scale. The AVG function seems to get a precision of
38 and a scale of six if the original scale was less than six; otherwise,
it retains its scale. This problem does not occur with MAX or MIN
functions. You can observe this behavior with a table created with select
into or with a view.
When you are trying to use a server side cursor to fetch the SUM or AVG of
a numeric column, this problem causes error 16923:
Cursorfetch: Maximum length of '%s' is incompatible with that of
selected column in the cursor.
Keywords : kbusage SSrvTran_SQL kbbug6.50 kbbug6.00
Version : 6.0 6.5
Platform : WINDOWS
Issue type : kbbug
Last Reviewed: April 9, 1999