У меня есть следующий запрос SQL, который отлично подходит для извлечения всех наших закупленных и изготовленных деталей:
WITH purchasedItems AS
(
SELECT DISTINCT
'BUY' as MAKE_BUY, PART_NUMBER AS NUMBER
FROM
PURCHASES
WHERE
ORDER_CREATED_DATE >= (SYSDATE-(365 * 3))
),
madeItems AS
(
SELECT DISTINCT
'MAKE' AS MAKE_BUY, FILE_PART_NUMBER AS NUMBER
FROM
OPERATIONS
WHERE
(FILE_CREATED_DATE >= (SYSDATE-(365*3)))
)
SELECT purchasedItems.*
FROM purchasedItems
UNION
SELECT madeItems.*
FROM madeItems
, который хорошо работает при получении таких данных, как:
| MAKE_BUY | NUMBER |
|----------|-----------|
| Buy | 1215DE-AA |
| Buy | 7545IO-EE |
| Buy | 1214MN-QQ |
| Buy | 1555XC-DD |
| Make | 3232EW-UU |
| Make | 4548GB-II |
| Make | 7477LA-AA |
| Buy | 9988NM-OO |
| Buy | 5624QZ-QQ |
| Make | 4444BA-BB |
Тем не менее, я ищу поворот.Мне нужно создать новый столбец (как я сделал для MAKE_BUY
), чтобы добавить, по существу, оператор if, который говорит:
if program_code LIKE '%SEERS%' THEN 'SEERS' as PROGRAM
ELSE IF program_code LIKE '%HP%' THEN 'HP' as PROGRAM
Я попытался добавить в свою программу следующее:
(CASE WHEN (program_code LIKE '%SEERS%') THEN 'SEERS' as PROGRAM)
но это не сработало.Я получаю сообщение об ошибке ORA-00905: отсутствует ключевое слово.
Я бы хотел, чтобы оно по сути выглядело так:
| MAKE_BUY | NUMBER | PROGRAM |
|----------|-----------|---------|
| Buy | 1215DE-AA | SEERS |
| Buy | 7545IO-EE | HP |
| Buy | 1214MN-QQ | HP |
| Buy | 1555XC-DD | HP |
| Make | 3232EW-UU | HP |
| Make | 4548GB-II | HP |
| Make | 7477LA-AA | HP |
| Buy | 9988NM-OO | HP |
| Buy | 5624QZ-QQ | SEERS |
| Make | 4444BA-BB | HP |
Я не нашел ресурсов, позволяющих использовать кейс.-при утверждении при создании нового столбца.
Спасибо за помощь.