我有一个基于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
答案 0 :(得分:0)
您可以尝试窗口函数,首先获取记录(包含重复项),然后在获取的记录上使用分区(将以前的查询视为内部查询),并获取使用第一个窗口函数进行所需的输出。