Teradata SQL 使用特定顺序删除重复项
Teradata SQL Get Rid of Duplicates with Specific Order
我这周才开始使用 teradata SQL,如果我的措辞不正确,请见谅。我最初在 R 中创建了一个脚本,用于删除 table 中的重复项,但现在我需要将此代码转移到 SQL 中。这是一些示例数据:
我想删除 DELETE 列中的任何 D,按 ID 分区,按状态、日期和金额排序(实际日期和金额在 ?s 之前)。我希望 STATUS 按此顺序排列:P、H、F、U、T。我希望第一行填写 STATUS、DATE 和 AMOUNT(按 STATUS 顺序)。这是示例输出数据:
我真的被订单问题困住了,我编写的代码根本没有生成任何数据(但没有错误)。
示例代码:
CREATE VOLATILE TABLE new_tble
AS
(SELECT *
FROM table
QUALIFY row_number() OVER (partition BY ID ORDER BY ID, DATE, AMOUNT)=1
WHERE DELETE <> 'D'
)
with data;
这是将您的描述直接翻译成 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
我这周才开始使用 teradata SQL,如果我的措辞不正确,请见谅。我最初在 R 中创建了一个脚本,用于删除 table 中的重复项,但现在我需要将此代码转移到 SQL 中。这是一些示例数据:
我想删除 DELETE 列中的任何 D,按 ID 分区,按状态、日期和金额排序(实际日期和金额在 ?s 之前)。我希望 STATUS 按此顺序排列:P、H、F、U、T。我希望第一行填写 STATUS、DATE 和 AMOUNT(按 STATUS 顺序)。这是示例输出数据:
我真的被订单问题困住了,我编写的代码根本没有生成任何数据(但没有错误)。
示例代码:
CREATE VOLATILE TABLE new_tble
AS
(SELECT *
FROM table
QUALIFY row_number() OVER (partition BY ID ORDER BY ID, DATE, AMOUNT)=1
WHERE DELETE <> 'D'
)
with data;
这是将您的描述直接翻译成 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