我想迭代一個計算,該計算需要符合特定標準的人數,並根據不同地區的計數來計算百分比。是否可以在列中的不同值上迭代計算?
我的代碼:
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語句;)。 –