Hi All,
For the sake of all visitors to this post, here is the solution that I figured out, with combination of my own effort, plus some other online help.
Thanks.
;WITH CTE1 AS
(
SELECT*, SUM(PctAllocation) OVER (PARTITION BY RankID) AS TotalAlloc
FROM#mytest
),
CTE2 AS
(
SELECT RankID, MIN(nIndex_CapacityOverrideType) AS MinType, MAX(nIndex_CapacityOverrideType) AS MaxType, TotalAlloc FROM CTE1 GROUP BY RankID, TotalAlloc
)
UPDATE #mytest SET bResult =
(
CASEWHEN B.MinType = 1 AND B.MaxType = 1 AND B.TotalAlloc <> 100 THEN 0
WHEN B.MinType = 1 AND B.MaxType = 2 AND B.TotalAlloc > 100 THEN 0
WHEN B.MinType = 2 AND B.MaxType = 2 AND B.TotalAlloc > 100 THEN 0
WHEN B.MinType = 1 AND B.MaxType = 3 AND B.TotalAlloc <> 100 THEN 0
WHEN B.MinType = 2 AND B.MaxType = 3 AND B.TotalAlloc > 100 THEN 0
WHEN B.MinType = 3 AND B.MaxType = 3 AND B.TotalAlloc <> 100 THEN 0
ELSE 1
END
)
FROM#mytestAS A
INNER JOINCTE2AS B
ON A.RankID = B.RankID