SQL查询,基于4列的重复检查

时间:2018-09-04 08:50:34

标签: mysql

我们有一个表格,其中包含大多数货币的汇率信息,并且每个月都会在表格中添加新的汇率。

大多数情况下,汇率信息是重复的,就像这样:

enter image description here

我们的程序之一是提取要放入另一个系统的信息。但是,该系统将检查是否存在重复的值,如上面的示例。根据第1列,第2列以及from_date到to_date,有一个重复项。

我创建了以下查询:

SELECT DISTINCT
CASE WHEN t1.FROM_CUR<>(CASE WHEN t1.FROM_CUR<t1.TO_CUR THEN t1.FROM_CUR ELSE t1.TO_CUR end) THEN 'wrong register' else 'ok register' end as clase
, t1.FROM_CUR, t1.TO_CUR, 
CAST(t1.EX_RATE as Date) AS FROM_DATE, 
CAST(DATEADD(day,-1,DATEADD( month, 1, t1.EX_RATE)) as Date) as TO_DATE, 'Corporate' as CORPORATE, t1.EXCH_RATE 

FROM EXCH_RATE t1
JOIN EXCH_RATE t2
ON t1.FROM_CUR = t2.TO_CURAND t1.TO_CUR = t2.FROM_CUR and t1.EX_RATE <> t2.EX_RATE

但是这样做是什么,它标记了“唯一”行,我仍然需要将数据放入excel并删除所有“错误寄存器”。

有没有一种方法可以改善此查询,因此我只会得到“确定的寄存器”?

1 个答案:

答案 0 :(得分:0)

使用案例,并使用单一名称并使用不同

   select distinct case when from_cur in('usd','euro') then 'usd' end as from_cur,
    case when to_cur in('usd','euro') then 'euro' end as To_cur,from_Date,to_date,rate from t