我想迭代一个计算,该计算需要符合特定标准的人数,并根据不同地区的计数来计算百分比。是否可以在列中的不同值上迭代计算?
我的代码:
USE Database1;
GO
declare @ShouldRegister as float
declare @Registered as float
SET @ShouldRegister = (SELECT COUNT(*) FROM dbo.TABLE
WHERE field1 in..
AND field2 in..
AND field3 in..
...
)
SET @Registered = (SELECT COUNT(*) FROM dbo.TABLE
WHERE field1 in..
AND field2 in..
AND field3 in..
...
)
SELECT
@ShouldRegister as ShouldRegister
, @Registered as Registered
, cast((@Registered/NULLIF(@ShouldRegister, 0))*100 as decimal(12,8)) as Percentmet
, CAST(100*2.33*(SQRT(@Registered/NULLIF(@ShouldRegister, 0) * (1-(@Registered/NULLIF(@ShouldRegister, 0)))/NULLIF(@ShouldRegister, 0))) as decimal(12,8)) + cast((@Registered/NULLIF(@ShouldRegister, 0))*100 as decimal(12,8)) as AdjPercentmet
代码返回是这样的:
ShouldRegister Registered Percentmet adjpercentmet
223587 565 0.25269805 0.27743717
每个人都有在 “区域” 列分配到的区域。上面的代码可以计算所有地区。我想看到的是:
ShouldRegister Registered Percentmet adjpercentmet Region
223 50 0.12345678 0.12345678 Region1
456 100 0.12345678 0.12345678 Region2
789 456 0.12345678 0.12345678 Region3
我的脑袋要做到:“对于区域的区域,做(代码)”,但我不认为SQL这样工作。
你必须是你使用的变量,然后你只能有一个价值的问题。由于你的计算看起来很复杂,你应该考虑使用交叉应用在选择中重复使用相同的计算 –
请添加一个示例数据,我认为你可以为该输出使用一个select语句;)。 –