SQL - 左连接到新列而不创建重复项

时间:2017-03-20 04:40:38

标签: sql

我有一个基于customerid的客户表(tcustomers)。我有另一张表,包含购买历史(tpurchasehist)和客户ID。我正在尝试在我的第一张桌子上添加twp列 - 一个标有'金牌会员?'如果购买列中的条目类似于'%Gold%',则其值为'是',而另一个条目在购买列中具有最近的行,例如'%已购买%'或'%已退回给客户%。我的问题是,我似乎无法弄清楚如何在不创建任何重复的情况下进行左连接,因为每个客户ID有多个购买条目。

SELECT tcustomers.custid 'Customer ID',
       tcustomers.custname 'Name',
       CASE
           WHEN th.purchases LIKE '%Purchased%' THEN 'Customer Made a Purchase'
           WHEN th.purchases like '%Returned%' THEN 'Customer Made a Return'
       END 'Recent Activity',
       CASE
           WHEN th.purchases LIKE '%Gold%' THEN 'Yes'
       END 'Gold Member?'
FROM tcustomerss
LEFT JOIN (
    SELECT DISTINCT th.custid, purchases, updated
    FROM tpurchasehist
    WHERE purchases LIKE '%Purchased%'
       or purchases like '%Returned%'
       or purchases like '%Gold%')
) th ON tcustomers.custid = th.custid

1 个答案:

答案 0 :(得分:0)

您可以尝试窗口函数,首先获取记录(包含重复项),然后在获取的记录上使用分区(将以前的查询视为内部查询),并获取使用第一个窗口函数进行所需的输出。