Sql 如何使用CASE条件过滤双重数据?
首先,请为我尝试Stack,如果我与此处的询问代码不匹配,请随时提供反馈 我在一张有财务信息和大量收入的表格中工作,在不同的截止日期 我想把身份证、截止日期和最近的收入退还给你 为了做到这一点,我做到了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
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()
请使用它。