我有两列要加入,但得到了一堆null,因为它不是在两列中都说"SWEATER",而是在一列中说"SWATER",在另一列中又说"SWEAT"。我做了一个完整的OUTER JOIN,尽管有很多匹配,但由于上述问题,仍然有很多null。
使用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
以下是我的建议。l_dmw_order_report.item_description_1为您提供已售出的物品,并且您希望将其与l_nvr_ec_returns.item_name.相匹配
不幸的是,它们不匹配。
步骤1:检查您的筛选条件(HAVING语句(。你不认为你也应该为l_nvr_ec_returns 的表保留NOT IN("运费"(吗
步骤2:两个表可以有不同的命名描述/项目,您可以通过编写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
试试这个。