查询计算的问题
- 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)