我们有一个表格,其中包含大多数货币的汇率信息,并且每个月都会在表格中添加新的汇率。
大多数情况下,汇率信息是重复的,就像这样:
我们的程序之一是提取要放入另一个系统的信息。但是,该系统将检查是否存在重复的值,如上面的示例。根据第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并删除所有“错误寄存器”。
有没有一种方法可以改善此查询,因此我只会得到“确定的寄存器”?
答案 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