0

我有两列我正在尝试加入,但得到一堆空值,因为它不是在两列中都说“SWEATER”,而是在一个列中显示“SWEATER”,在另一个列中显示“SWEAT”。我做了一个 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

4

1 回答 1

1

这是我可以建议的。l_dmw_order_report.item_description_1 为您提供已售商品,您希望将其与 l_nvr_ec_returns.item_name 匹配。

不幸的是,它们不匹配。

Step1:检查您的过滤条件(HAVING 语句)。你不认为你也应该为带有 l_nvr_ec_returns 的表保留 NOT IN ('Freight')

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

尝试这个。

于 2019-11-07T18:27:32.500 回答