2 つの項目:1) ゴードンの反応は、レベル =0 を除いて事実上的を射ていました。 Level=1 である必要があります
2) 希望する結果の最後の行が正しいとは確信できません。10 ずれていると思います。もし正しくない場合はお知らせください。もう一度確認します。
Declare @Table table (Profile varchar(25),Level int,CHgt int,BHgt int, SHgt int, Z int) Insert into @Table values ('ABCD1' , 1 , 15 , 11 , 50 , 0), ('ABCD1' , 2 , 15 , 11 , 70 , 0), ('ABCD1' , 3 , 15 , 11 , 70 , 0), ('ABCD2' , 1 , 15 , 11 , 60 , 0), ('ABCD2' , 2 , 15 , 11 , 80 , 0), ('ABCD2' , 3 , 15 , 11 , 80 , 0), ('ABCD3' , 1 , 15 , 11 , 40 , 0), ('ABCD3' , 2 , 15 , 11 , 60 , 0), ('ABCD3' , 3 , 15 , 11 , 60 , 0) select A.Profile ,A.Level ,A.CHgt ,A.BHgt ,A.SHgt ,B.Bhgt2 ,Shgt2 = case when Level = 1 then 0 else SHgt2 end ,Z = CHgt + B.Bhgt2 + case when level = 1 then 0 else SHgt2 end From @Table A Cross Apply (Select Bhgt2 = sum(Bhgt) ,SHgt2 = sum(SHgt) From @Table B Where B.Profile = A.Profile and A.Level >= B.Level ) B;
プレ>返品
Profile Level CHgt BHgt SHgt Bhgt2 Shgt2 Z ABCD1 1 15 11 50 11 0 26 ABCD1 2 15 11 70 22 120 157 ABCD1 3 15 11 70 33 190 238 ABCD2 1 15 11 60 11 0 26 ABCD2 2 15 11 80 22 140 177 ABCD2 3 15 11 80 33 220 268 ABCD3 1 15 11 40 11 0 26 ABCD3 2 15 11 60 22 100 137 ABCD3 3 15 11 60 33 160 208
プレ>