首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

◆◇◆同一sql语句,有时正常,有时出错,请大家看查查是什么有关问题.郁闷ing◆◇◆

2012-01-30 
◆◇◆同一sql语句,有时正常,有时出错,请大家看查查是什么问题.郁闷ing◆◇◆查询语句如下:select*from##TempDat

◆◇◆同一sql语句,有时正常,有时出错,请大家看查查是什么问题.郁闷ing◆◇◆
查询语句如下:

select   *   from   ##TempData

SELECT    
t.AnalysSortKey   AS   类别,
t.Much   as   销售量,
t.MustPay   as   销售业绩,
cast(t.MustPay/Much     as   dec   (10,2))     as     平均价,  
cast(cast(t.MustPay   /(   SELECT   sum(mustpay)   FROM   ##TempData   )   *100     as   dec   (10,2))as   varchar(5))+ '% '       as   占总业绩百分比
FROM  

(
SELECT  
SD.AnalysSortKey,
SUM(SD.MustPay)   as   MustPay,
SUM(SD.Much)   as   Much

FROM
##TempData       SD  
GROUP   BY  
SD.AnalysSortKey
)   t


当     ##TempData   有如下的记录时
-------------------------------
much         MustPay   AnalysSortKey
-------------------------------
7560.00欧菜雅
8640.00欧菜雅
8640.00欧菜雅2
8640.00欧菜雅2
3240.00欧菜雅

> > >     输出结果:   (正常)
-------------------------------------------------------
类别     销售量       销售业绩           平均价       占总业绩百分比
-------------------------------------------------------
欧菜雅             18       1440.00             80.00         52.94%
欧菜雅2         16           1280.00             80.00         47.06%


当     ##TempData   有如下的记录时
-------------------------------
much         MustPay   AnalysSortKey
-------------------------------
7560.00单项
8640.00单项
8640.00单项
8640.00单项
3240.00单项


> > >     输出结果:
-----------------------
服务器:   消息   8115,级别   16,状态   5,行   3
将   numeric   转换为数据类型   varchar   时发生算术溢出错误。


我现在发现的规律:当       ##TempData.AnalysSortKey     的记录是相同的内容时,就会报错,否则就是正常的,怎么回事呀?哪有里有问题啊



[解决办法]
可以将
cast(cast(t.MustPay /( SELECT sum(mustpay) FROM ##TempData ) *100 as dec (10,2))as varchar(5))+ '% '
换成
rtrim(cast(t.MustPay /( SELECT sum(mustpay) FROM ##TempData ) *100 as dec (10,2)))+ '% '
[解决办法]
是的!

热点排行