2017-11-15 33 views
0

を分離しました。このためには、次のようなクエリを作成する必要があります。は、私はこれらの構造を持つテーブルを持っている

select xxxxx from yyyyy where jjjjj in (material, clay, rush) 
select xxxxx from yyyyy where jjjjj in (material, air) 
select xxxxx from yyyyy where jjjjj in (metal, iron) 
select xxxxx from yyyyy where jjjjj in (metal, gold, silver, aluminum) 

yyyyは別のテーブルです。

は、PL/SQLのOracleでこれらを作成することは可能ですか?私は試してきましたが、私は能力がありません、少し混乱しているようです。おかげに関しては、

+0

あなたのテーブルが適切に正規化されていないfoが、それは[1NF](https://en.wikipedia.org/wiki/First_normal_form)の規則に従っていません動作します。スキーマを正規化し、複数の値を1つの列に格納しないでください。あなたがそれをしないと、痛みが始まります。この列をほとんどすべてのクエリの個々の値に解析する必要があります。 – krokodilko

答えて

0

これは、あなたが

DECLARE 
l_query VARCHAR(500); 
BEGIN 
    FOR i in (SELECT FiledA, FiledB, FiledA||','||FiledB AS FiledC FROM test) 
    LOOP 
     l_query := 'SELECT xxxxx FROM yyyyy WHERE jjjjj IN '; 
     l_query := l_query||'('||i.FiledC||')'; 
     UPDATE test 
      SET FiledC = l_query 
     WHERE FiledA = i.FiledA 
      AND FiledB = i.FiledB; 
     l_query := NULL; 
    END LOOP; 
    COMMIT; 
END; 
/
関連する問題