我有一个包含Sale事件历史记录的数据集,我需要创建一个列来显示销售是否仍处于活动状态。我的数据集如下所示:
item | original_price | sale1 | sale2 | sale3 | current_price
-----|----------------|-------|-------|-------|--------------
1 | 3.00 | 2.75 | ? | ? | 2.75
2 | 4.00 | ? | 3.50 | ? | 4.00
3 | 10.00 | 7.50 | ? | 8.50 | 8.50
在item 1
的情况下,新字段应该说有效,因为该项仍然是sale1
价格。 Item 2
应该说非活跃,因为价格不再是促销价格
Item 3
正在发售,然后却没有,现在再次发售活跃
因此,SQL需要提取所有这些字段,并通过将current_price
与最新的salex变量进行比较来创建新列。
我需要将其实现到当前的SQL进程中,但不知道如何在语法上执行此操作。感谢。
答案 0 :(得分:2)
这似乎与你的定义相符:
case
when coalesce(sale3, sale2, sale1) = current_price then 'active'
else 'nonactive'
end