Hi Drew, tried this ........
ALTER PROC MyTest1
AS
DECLARE
@i INT = 1
,@IncidentValueRecordCount INT
,@NetLossesListPrev12Months [dbo].[Net Losses List]
,@NetLossesSumPrev12Months FLOAT
SELECT @IncidentValueRecordCount = MAX([Record Loop ID]) FROM [dbo].[Mytable];
WHILE @i <= @IncidentValueRecordCount
BEGIN
DELETE FROM @NetLossesListPrev12Months;
INSERT INTO @NetLossesListPrev12Months
SELECT
A.[Net Losses]
FROM
[dbo].[Mytable] A
,(
SELECT *
FROM [dbo].[Mytable]
WHERE [Record Loop ID] = @i
) B
WHERE A.[ADM_RISK_GRADING_ORG_UNIT_ID] = B.[ADM_RISK_GRADING_ORG_UNIT_ID]
AND A.[ADM_EVENT_TYPE_ID] = B.[ADM_EVENT_TYPE_ID]
AND A.[ADM_CAUSE_TYPE_ID] = B.[ADM_CAUSE_TYPE_ID]
AND A.[Effect Date YYYYMM] >= B.[Effect Date YYYYMM] - 100
AND A.[Effect Date YYYYMM] < B.[Effect Date YYYYMM];
SET @i = @i + 1;
END
--------------------------------------------------------------------
SELECT
A.[Record Loop ID],
A.[Net Losses],
sum(A.[Net Losses]) over (partition by A.[ADM_RISK_GRADING_ORG_UNIT_ID],A.[ADM_EVENT_TYPE_ID],A.[ADM_CAUSE_TYPE_ID] order by A.[Effect Date YYYYMM] rows between 12 preceding and 1 preceding) [Net Losses Prev 12 Months]
INTO #A
FROM [dbo].[Mytable] A
SELECT
[Record Loop ID],
[Net Losses],
[Net Losses Prev 12 Months],
[Risk Grading] =
CASE
WHEN [Net Losses] = 0
THEN NULL
WHEN [Net Losses] <= [dbo].[Percentile](@NetLossesListPrev12Months, 0.2)
THEN 1
WHEN [Net Losses] <= [dbo].[Percentile](@NetLossesListPrev12Months, 0.4)
THEN 2
WHEN [Net Losses] <= [dbo].[Percentile](@NetLossesListPrev12Months, 0.6)
THEN 3
WHEN [Net Losses] <= [dbo].[Percentile](@NetLossesListPrev12Months, 0.8)
THEN 4
ELSE 5
END INTO #B
FROM #A
WHERE [Record Loop ID] between 109171 and 109182
ORDER BY [Record Loop ID]
---------------------------------------------------
UPDATE FROM [dbo].[Mytable] SET
[Net Losses Prev 12 Months] = C.[Net Losses Prev 12 Months]
,[Risk Grading] = C.[Risk Grading]
FROM #B C
JOIN FROM [dbo].[Mytable] D on D.[Record Loop ID] = C.[Record Loop ID]