从下表中我需要选择 根据 o 层次结构,每个 GEID 有一个记录: -- 最小 CCSHierarchy ,如果有多个记录 -- 最小注册日期,如果有多个记录 -- 最小 RegFromHierarchy ,如果有多个记录 -- 最小 EnrMandHierarchy
GEID | CCSH层级 | 注册日期 | RegFromHierarchy | EnrMandHierarchy |
---|---|---|---|---|
9D0054560 | 1 | 2020-05-13 | 2 | 2 |
9D0054560 | 1 | 2020-05-13 | 1 | 1 |
-------- | ------------- | ------------------- | ------------------- | ---------------- |
9D0131758 | 2 | 2020-02-28 | 2 | 2 |
9D0131758 | 2 | 2020-08-25 | 1 | 2 |
-------- | ------------- | ------------------- | ------------------- | ---------------- |
9D10057241 | 4 | 2019-04-19 | 2 | 2 |
9D10057241 | 3 | 2019-11-06 | 1 | 2 |
我试过这个查询,但没有保留层次结构
with data as
(----
)
select
d.GEID
, d.ClassCode
, min(d.CCSHierarchy) MINCCSHierarchy
, MIN (d.RegistrationDate) MINRegistrationDate
, min (d.RegFromHierarchy) MINRegFromHierarchy
, min (d.EnrMandHierarchy) MINEnrMandHierarchy
from data d
group by d.ClassCode, d.GEID
谢谢!
答案 0 :(得分:0)
使用窗口函数:
select d.*
from (select d.*,
row_number() over (partition by geid order by CCSHierarchy, RegistrationDate, RegFromHierarchy, EnrMandHierarchy) as seqnum
from data d
) d
where seqnum = 1;