は、私は非常にあなたのテーブル構造を変更することをお勧めします。現在、1つのフィールドに2つの情報が結び付けられています。これはSQLのアンチパターンであり、特定の最適化をユーザーに提供するOracleの能力を破壊します。
代わりに、「PROD_KEY」を2つのフィールド(PRODUCT_TYPE = Prod_Aなど)(SUB_PRODUCT_ID = 1,2,3など)に分割することを検討してください。または、データベース全体の潜在的な変更を少なくするには、現行の表にPRODUCT_TYPEを追加するだけです。あなたが出力として必要な、特に何の列を知っているとき、これが機能する
SELECT
EN_NO,
PROD_KEY,
CASE WHEN (EN_NO < 4) AND (LEFT(PROD_KEY, 6) = 'Prod_A') THEN PROD_KEY ELSE NULL END AS Prod_A,
CASE WHEN (EN_NO < 4) AND (LEFT(PROD_KEY, 6) = 'Prod_B') THEN PROD_KEY ELSE NULL END AS Prod_B,
CASE WHEN (EN_NO < 4) AND (LEFT(PROD_KEY, 6) = 'Prod_C') THEN PROD_KEY ELSE NULL END AS Prod_C,
PROD_QTY
FROM
yourTable
...あなたの現在の構造を使用して、言った
。 Prod_D
などに適応するコードが必要な場合は、コード(動的SQL)を記述するコードを記述する必要があります。