次のテーブルがあるとします。
CREATE TABLE #temp(AnimalId varchar(5), BodyPartId varchar(5), Value decimal)
INSERT INTO #temp
SELECT 'A', 'X', 50 union all
SELECT 'A', 'Y', 75 union all
SELECT 'A', 'B', 100 union all
SELECT 'B', 'K', 60 union all
SELECT 'B', 'J', 53
動物は、特定の値を持つ体の部分で構成されています。彼らの体の部分は他の動物である可能性もあります。
他の動物の体の部分を他の動物の体の部分の値に置き換えることができる必要があります。
SQLでこれを行うことは可能ですか?
上記の例を使用して計算するには、体のどの部分が動物であるかを調べます (B)。次に、これらの動物について、体の各部分が占める割合を計算します。
K divided by total of B: 60/113 = 0.53
J divided by total of B: 53/113 = 0.47
次に、これらの値に A の B の合計を掛けます。
Ks percentage times 100: 0.53 * 100 = 53
Js percentage times 100: 0.47 * 100 = 47
したがって、動物 A の最終的な構成は次のようになります。
X 50
Y 75
K 53
J 47
動物に対する各体の部分の割合を見つけるのに苦労しています。動物は、体の部分だけで構成されている他の動物でしか構成できないと想定しているため、再帰的な解決策は必要ありません (ただし、それを見るのは良いことです)。