SQL在CTE中重复数据删除

时间:2018-03-22 14:13:07

标签: sql oracle duplicates

我有三个完美运行的CTE并给出了我要求的完整列表但在最终结果中有多个重复,因为fax_date在导出时有时间和日期。我想通过Auth_Number重复删除列表,这样我就可以删除Dups。基本上我想要为每个独特的Auth_Num提供一条线及其所有细节。非常感谢任何帮助

.sidebar-tooltip

1 个答案:

答案 0 :(得分:0)

谢谢大家!我在Auth_Number上做了row_number函数,我能够对我的列表进行重复删除。我还为该列添加了一个desc,并在最终的CTE中删除了“DP”列。

Letter_Sent AS(  
Select Distinct
cmt.*,
TRUNC(act.actv_strt_dttm)                       AS Fax_Date,
ROW_NUMBER () OVER (PARTITION BY cmt.Auth_num ORDER BY act.actv_strt_dttm,TRUNC(act.actv_strt_dttm)DESC)DP,
CASE When act.ACTV_TYP_ID ='5' THEN 'Yes'---"Manual letter sent "
ELSE 'No'
END  AS Letter_Sent 
From Fax_Sent cmt
Left Join icue.actv act
On cmt.Auth_num = act.hsc_id
Where trunc(act.actv_strt_dttm) between to_date('19-FEB-2018','DD-MON-YYYY') and to_date('06-MAR-2018','DD-MON-YYYY')
)
Select * From Letter_Sent Where DP = '1'