在项目中需要计算CP95值,既将数据从小到大排列,获取第95%个值。因此需要在存储过程中动态构建sql语句,同时需要在动态构建的sql中获取执行的返回值。
declare @Cp95AA float
set @CP95 = @count * 0.95
select @sql = 'select @Cp95AA=MAX(Cp95AA) from #tempA
where Cp95AA in (select top ' + cast(@CP95 as varchar(20)) + ' Cp95AA from #tempA order by Cp95AA asc)'
exec sp_executesql @sql, N'@Cp95AA float output', @Cp95AA output