我们有一个表,其中有大多数货币的汇率信息,每月都会有新的汇率添加到表中。
汇率信息大多数时候是相互重复的,如下所示:

我们的程序之一是提取要放入另一个系统中的信息。但是,此系统会检查是否存在重复的值,如上例所示。基于第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中,并删除所有“错误的寄存器”。
有没有办法改进这个查询,让我只得到'ok register‘?
发布于 2018-09-04 18:40:44
用例when和make single name并使用distinct
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 thttps://stackoverflow.com/questions/52162382
复制相似问题