SQL 根据层次结构选择

时间:2021-03-05 17:44:40

标签: sql select

从下表中我需要选择 根据 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

谢谢!

1 个答案:

答案 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;
相关问题