Я очень рекомендую изменить структуру вашей таблицы.В настоящее время у вас есть две части информации, связанные в одном поле.Это анти-шаблон SQL, который уничтожает способность Oracle использовать определенные оптимизации.
Вместо этого рассмотрите возможность разделения "PROD_KEY" на два поля (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).