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

查询计算的有关问题

2012-06-04 
查询计算的问题SQL code查询语句:SELECT *,dbo.F_GetSuccessTradeProportion(vmt.ClinchADealPublishNum,

查询计算的问题

SQL code
查询语句:SELECT *,dbo.F_GetSuccessTradeProportion(vmt.ClinchADealPublishNum, vmt.PublishNum) AS SuccessTradeProportion,dbo.F_GetSuccessTradeProportion(vmt.AppealedPublishNum, vmt.PublishNum) AS AppealTradeProportionfrom ##VendorMangerTable vmtF_GetSuccessTradeProportion函数:Create FUNCTION F_GetSuccessTradeProportion(    @SuccessOrAppealPublishNum INT,    @PublishNum INT)RETURNS FLOATASBEGIN    DECLARE @proportion FLOAT    IF @PublishNum<>0 AND @PublishNum IS NOT NULL AND @SuccessOrAppealPublishNum IS NOT NULL        SET @proportion= CAST(@SuccessOrAppealPublishNum/@PublishNum*100 AS FLOAT)    ELSE        SET @proportion=0         RETURN @proportion              END



有几条数据PublishNum、ClinchADealPublishNum、AppealedPublishNum列都有值,但是计算出来为0,请大牛们解答,非常感谢

[解决办法]
SQL code
F_GetSuccessTradeProportion函数:Create FUNCTION F_GetSuccessTradeProportion(    @SuccessOrAppealPublishNum INT,    @PublishNum INT)RETURNS FLOATASBEGIN    DECLARE @proportion FLOAT    IF @PublishNum<>0 AND @PublishNum IS NOT NULL AND @SuccessOrAppealPublishNum IS NOT NULL        SET @proportion= CAST(@SuccessOrAppealPublishNum AS FLOAT)/@PublishNum*100    ELSE        SET @proportion=0         RETURN @proportion              END--try
[解决办法]
SQL code
--应是转换问题,按你的写法@SuccessOrAppealPublishNum小于@PublishNum时就会是0,这样试下CAST(@SuccessOrAppealPublishNum/(@PublishNum*1.0)*100 AS FLOAT) 

热点排行