搜索和比较列以创建新列(Teradata SQL)

时间:2016-08-30 14:37:13

标签: sql row teradata operations

我有一个包含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进程中,但不知道如何在语法上执行此操作。感谢。

1 个答案:

答案 0 :(得分:2)

这似乎与你的定义相符:

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