创建新的SQL列来获取新的值



我有这个事务表,我如何查询以查找一个人是否为新客户,返回成员,返回非成员。例如,当序列= 1时,id 1是一个新客户端,它们只能在购买了类型(成员)之后成为成员/返回成员,例如id 1和序列4是返回非成员,因为这是它们第一次购买成员。在该事务序列5之后,它们现在是返回成员

while for id 2从未购买成员,因此第一个序列将是新客户端,而其他序列将返回非成员,直到他们购买成员。

问题
33

您可以通过一个额外的子查询以一种非常严格的方式完成,但就性能而言,这不是最好的方法。

SELECT
*,
CASE 
WHEN t.Sequence = 1 THEN 'New Client'
WHEN 
EXISTS (
SELECT * 
FROM YourTable AS th 
WHERE 
th.Date < t.Date 
AND th.Id = t.Id 
AND th.Type ILIKE 'Member'
) THEN 'Returning-Member' 
ELSE 'Returning-Non-Member'
END AS Membership
FROM YourTable AS t

最新更新