2016-08-30 36 views
0

我有一个包含销售事件历史记录的数据集,并且需要创建一列以显示销售是否仍处于活动状态。我的数据集是这样的:搜索并比较列以创建新列(Teradata SQL)

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过程中实现它,但不知道如何在语法上做到这一点。谢谢。

回答

2

这似乎符合您确定指标:

case 
    when coalesce(sale3, sale2, sale1) = current_price then 'active' 
    else 'nonactive' 
end 
+0

谢谢@dnoeth。这工作完美。我遇到了一个问题实现,但这是由于我是如何编码缺失值(''vs NULL)。 – pyll