读书人

查询计算的有关问题

发布时间: 2012-06-04 14:48:03 作者: rapoo

查询计算的问题

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) 

读书人网 >SQL Server

热点推荐