Как связать два столбца из отдельных таблиц, если значения ПОХОЖИЕ, а не ТОЧНЫЕ? - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть два столбца, к которым я пытаюсь присоединиться, но получаю кучу пустых значений, потому что вместо слова «СВИТЕР» в обоих столбцах написано «СВИТЕР» в одном и «СВИТ» в другом. Я выполнил FULL OUTER JOIN, и хотя многие из них совпали, из-за вышеуказанной проблемы все еще остается куча нулей.

Использование Tableau для выполнения FULL OUTER JOIN для двух запросов: один запрос извлекает "количество проданных товаров, в то время как другой тянет «количество возвращенных предметов», сопоставляя его с именем предмета / описанием предмета (что в идеальном мире будет точно соответствовать. Но это моя проблема, они этого не делают).

SELECT 
    item_description_1, SUM(quantity_ordered) "units_sold_OCT2019"
FROM
    l_dmw_order_report
WHERE
    quantity_ordered > 0
    AND oms_order_date BETWEEN '2019-10-01' AND '2019-10-31'

GROUP BY item_description_1
    HAVING item_description_1 NOT IN ('Freight')

ORDER BY item_description_1

SELECT
    item_name, SUM(return_qty) "#_of_returns_OCT2019"
FROM 
    l_nvr_ec_returns
WHERE 
    return_created_date BETWEEN '2019-10-01' AND '2019-10-31'
    AND return_status NOT IN ('Cancelled', 'cancelled')

GROUP BY item_name
    HAVING item_name NOT IN ('')
ORDER BY item_name

[Вот изображение того, где именно я застрял, где значения не совпадают, и я не знаю, как поступить, чтобы соответствовать им .. .] [1] [1]: https://i.stack.imgur.com/B61Gr.png

1 Ответ

0 голосов
/ 07 ноября 2019

Вот что я могу предложить. l_dmw_order_report.item_description_1 дает вам проданные товары, и вы хотите сопоставить это с l_nvr_ec_returns.item_name.

к сожалению, они не совпадают.

Шаг 1: проверьте состояние фильтра (оператор HAVING). Не думаете ли вы, что вам также следует оставить NOT IN ('Freight') для таблицы с l_nvr_ec_returns

Step2: обе таблицы могут иметь разные описания / элементы именования, и вы можете сопоставить их, написав оператор CASE.

пример:

Item_name 
--------
SWEATER
JACKET
item_description_1
-------
SWEAT
JACK

Тогда

SELECT 
    (case when item_description_1='SWEAT' then 'SWEATER'
      when item_description_1='JACK' then 'JACKET'
END) as item_descrption_1, SUM(quantity_ordered) "units_sold_OCT2019"
FROM
    l_dmw_order_report
WHERE
    quantity_ordered > 0
    AND oms_order_date BETWEEN '2019-10-01' AND '2019-10-31'

GROUP BY item_description_1
    HAVING item_description_1 NOT IN ('Freight')

ORDER BY item_description_1

попробуйте это.

...