Teradata SQL通过特定顺序摆脱重复

时间:2017-09-06 17:34:53

标签: sql teradata

本周我刚开始使用teradata SQL,如果我没有正确地说出来,那就很抱歉。我最初在R中创建了一个脚本,摆脱了我的表中的重复,但现在我需要将此代码转换为SQL。以下是一些示例数据:

enter image description here

我想删除DELETE列中的任何D,按ID分区,按STATUS,DATE和AMOUNT排序(实际日期和金额在?之前)。我希望STATUS按此顺序排列:P,H,F,U,T。我希望第一行填写STATUS,DATE和AMOUNT(按顺序使用STATUS)。以下是示例输出数据:

enter image description here

我真的陷入了订单问题,我编写的代码根本没有产生任何数据(但没有错误)。

示例代码:

*306.nii

1 个答案:

答案 0 :(得分:2)

这是您的描述直接翻译成Teradata SQL,假设?表示NULL

select *
from tab
where "delete" is null
  and "date" is not null
  and amount is not null
qualify
   row_number() 
   over (partition by id
         order by case status 
                    when 'P' then 1 
                    when 'H' then 2 
                    when 'F' then 3
                    when 'U' then 4 
                    when 'T' then 5 
                  end
                  ,"date"
                  ,amount) = 1