2016-04-19 13 views
1

条件付きで別の行の値に基づいて一部の行の値を計算するテーブルがあります。条件付きで別の行を参照する行を選択します。

の表は、この

LevelID StepID Amt  Type BItem  PItem 
------------------------------------------------- 
6  3  18000 Fixed    BS 
6  3  10  Percent BS   UA 
6  3  10  Percent BS   TA 
6  3  3.5  Percent BS   Tx 
7  3  24000 Fixed    BS 
7  3  10  Percent BS   UA 
7  3  10  Percent BS   TA 
7  3  3.5  Percent BS   Tx 

のように見える目的はBitem = PItem Type =「パーセント」で行のAMTの値を計算することで、LevelIDとStepIDは

BItemとPItemの両方で同じです

だから、サンプル出力は

LevelID StepID Amt  Type BItem  PItem Total 
---------------------------------------------------------- 
6  3  18000 Fixed    BS  18,000 
6  3  10  Percent BS   UA  1,800 
6  3  10  Percent BS   TA  1,800 
6  3  3.5  Percent BS   Tx  630 
7  3  24000 Fixed    BS  24,000 
7  3  10  Percent BS   UA  2,400 
7  3  10  Percent BS   TA  2,400 
7  3  3.5  Percent BS   Tx  840 

だろう、私は別のSQL文をしようとしているが、まだ合理的な出力を持っていない

答えて

1

correlated subqueryを使用し、値をルックアップするために:

SELECT *, 
     CASE Type 
     WHEN 'Fixed' THEN Amt 
     ELSE (SELECT B.Amt * ATable.Amt/100 
      FROM ATable AS B 
      WHERE B.Type = 'Fixed' 
       AND B.LevelID = ATable.LevelID 
       AND B.StepID = ATable.StepID 
       AND B.PItem = ATable.BItem) 
     END AS Total 
FROM ATable; 
+0

は、私は同様の相関サブクエリを書いたが、それは私の結果が得られますでした、ありがとうございました – Smith

関連する問題