繁体   English   中英

Teradata SQL- 按日期排序并标记两个事件之间的行

[英]Teradata SQL- Order by date and flag rows between two events

我有一个这样的数据集在此处输入图片说明

我有一个名为“SALES_CHANGE”的字段,它标识销售量显着上升或下降的日期。 我有兴趣创建另一个标记下降和上升之间的时间段的字段。 即,像这样: 在此处输入图片说明 标志在下降时开始,然后在下一次上升之前停止。 然后当有另一个下降时再次开始。

Teradata 支持lag() ignore nulls 因此,您的规则基本上是具有值的当前行或最近行是'DROP' 为了那个原因 。 . .

select t.*,
       (case when sale_change = 'DROP' or prev_sale_change = 'DROP'
             then 'DIP'
        end)
from (select t.*,
             lag(sale_change ignore nulls) over (order by id_date) as prev_sale_change
      from t
     ) t;

你真的不需要子查询——滞后可以在case表达式中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM