Как добавить новую строку из другой таблицы с объединением? - PullRequest
0 голосов
/ 13 февраля 2019

Я должен добавить новую строку из таблицы products, владельцем которой является sales (sh), в product_name_us и prod_desc в product_desc_us, используя объединение.

SELECT temp.*
FROM (SELECT DISTINCT CASE WHEN pd.LANGUAGE_ID = 'US' THEN 
COALESCE(TO_CHAR(pd.TRANSLATED_NAME), ' ')
                      END AS PRODUCT_NAME_US,
                      CASE WHEN pd.LANGUAGE_ID = 'US' THEN 
CONCAT(SUBSTR(pd.TRANSLATED_DESCRIPTION, 1, 30), '...')
                      END AS PRODUCT_DESC_US,
                      CASE WHEN pd.LANGUAGE_ID = 'RU' AND pd.translated_name
 IS NULL THEN COALESCE(TO_CHAR(pd.TRANSLATED_NAME), ' ')
                      END AS PRODUCT_NAME_RU,
                      CASE WHEN pd.LANGUAGE_ID = 'RU' AND 
pd.translated_description IS NULL THEN 
CONCAT(SUBSTR(pd.TRANSLATED_DESCRIPTION, 1, 30), '...')
                      END AS PRODUCT_DESC_RU,
                      CASE 
                           WHEN EXTRACT(MONTH FROM pin.WARRANTY_PERIOD) = 

'00'  THEN EXTRACT(YEAR FROM pin.WARRANTY_PERIOD) || ' years'



                      END AS "Warranty", inv.QUANTITY_ON_HAND AS IN_STOCK 

FROM PRODUCT_DESCRIPTIONS pd JOIN PRODUCT_INFORMATION pin

ON pd.PRODUCT_ID = pin.PRODUCT_ID

JOIN INVENTORIES inv

ON inv.PRODUCT_ID = pin.PRODUCT_ID) temp




WHERE temp.PRODUCT_NAME_US LIKE '%Monitor%' 

AND temp.IN_STOCK < 100

union all (select PROD_NAME,PROD_DESC from sh.products);

1 Ответ

0 голосов
/ 13 февраля 2019

Если я правильно понял, вы хотите добавить строку в качестве нижнего колонтитула в ваш первый выбор.Использование объединения доступно только в том случае, если ваши 2 выбора имеют одинаковое количество столбцов

select 'field1' as a, 'field2' as b, 'field3' as c from dual
union all
select '1', '2', null from dual;

введите описание изображения здесь

Но если вы хотите использовать во втором столбце запроса из первого, чтобы соответствовать, этоневозможно, потому что вне оператора select

...