Sql 如何使用CASE条件过滤双重数据?

Sql 如何使用CASE条件过滤双重数据?,sql,function,case,Sql,Function,Case,首先,请为我尝试Stack,如果我与此处的询问代码不匹配,请随时提供反馈 我在一张有财务信息和大量收入的表格中工作,在不同的截止日期 我想把身份证、截止日期和最近的收入退还给你 为了做到这一点,我做到了 SELECT A.ID, A.closing_date,A.operating_revenue_ From financials A INNER JOIN( SELECT ID, max(closing_date) as Latest_Date FROM financi

首先,请为我尝试Stack,如果我与此处的询问代码不匹配,请随时提供反馈

我在一张有财务信息和大量收入的表格中工作,在不同的截止日期

我想把身份证、截止日期和最近的收入退还给你

为了做到这一点,我做到了

SELECT A.ID, A.closing_date,A.operating_revenue_
From financials A

INNER JOIN(
      SELECT ID, max(closing_date) as Latest_Date
      FROM financials
      GROUP BY ID
)tm on A.ID=tm.ID and A.closing_date=tm.Latest_Date
现在我的问题是,根据财务数据中的合并代码,我有双重数据。我碰巧在同一日期有未合并和合并的数据,代码是U1,C1

如果我有这两个代码的数据,你知道如何检索合并的代码吗?

我正在尝试使用CASE函数:

WHERE A.consolidation code in ('C1','U1')
AND (Case A.consolidation_code in 'U1' or 'C1', then 'C1'
ELSE 'U1'
END)
```

The latest seems the issue, has anyone an idea of what is the issue and how I could solve it?
Thank you


  [1]: https://i.stack.imgur.com/yOdhJ.png
使用
row\u number()over()
并假设
ID、结账日期、营业收入、合并代码是唯一的关键,并且基于事实
'C1'
'U1'

select A.ID, A.closing_date,A.operating_revenue_
from (
    select f.*, row_number() over(partition by ID, closing_date, operating_revenue_ order by consolidation_code) rn
    from financials f
    where consolidation_code in ('C1','U1')
) A
where a.rn = 1

示例数据将对您的问题大有帮助。如果您的DBMS支持
row\u number()over()
请使用它。