首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL查询,按4列查重

SQL查询,按4列查重
EN

Stack Overflow用户
提问于 2018-09-04 16:50:34
回答 1查看 35关注 0票数 0

我们有一个表,其中有大多数货币的汇率信息,每月都会有新的汇率添加到表中。

汇率信息大多数时候是相互重复的,如下所示:

我们的程序之一是提取要放入另一个系统中的信息。但是,此系统会检查是否存在重复的值,如上例所示。基于第1列、第2列和from_date到to_date,存在重复项。

我创建了以下查询:

代码语言:javascript
运行
复制
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‘?

EN

回答 1

Stack Overflow用户

发布于 2018-09-04 18:40:44

用例when和make single name并使用distinct

代码语言:javascript
运行
复制
   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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52162382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档