【发布时间】:2016-03-21 21:00:28
【问题描述】:
我正在寻找一种方法来选择一行数据而不是其他行。例如,如果我有以下数据:
FIRSTNAME LASTNAME STARTDATE ENDDATE FLG_DT
JIM SMITH 01-MAR-1987 09-OCT-2001 BEFORE
JIM SMITH 05-MAY-2003 07-DEC-2007 MATCH
JIM SMITH 01-APR-2009 01-DEC-2015 AFTER
JIM SMITH 01-APR-2016 01-APR-2016 NONE
JOHN SMITH 01-MAY-2002 01-MAR-2016 MATCH
LORI SMITH 20-JAN-2009 20-JAN-2010 BEFORE
LORI SMITH 21-JAN-2010 01-MAR-2016 AFTER
ADAM TAYLOR 01-APR-2016 01-APR-2016 NONE
基本上,对于不同的 FIRSTNAME、LASTNAME、STARTDATE,我想首先选择具有 FLG_DT = 'MATCH' 的行。如果 'MATCH' 不存在,我只想选择 FLG_DT = 'BEFORE' 的行。如果这些都不存在,那么我想选择 FLG_DT = 'AFTER',如果不存在,那么我将选择'NONE。我可以在 flg_dt 字段中使用 ROW_NUMBER() OVER PARTITION BY 和 ORDER BY 字段,但不确定如何以这种分层顺序选择它并将其他字段排除在外。结果应该是:
FIRSTNAME LASTNAME STARTDATE ENDDATE FLG_DT
JIM SMITH 05-MAY-2003 07-DEC-2007 MATCH
JOHN SMITH 01-MAY-2002 01-MAR-2016 MATCH
LORI SMITH 20-JAN-2009 20-JAN-2010 BEFORE
ADAM TAYLOR 01-APR-2016 01-APR-2016 NONE
感谢您的帮助。我觉得这对我来说应该很明显,但我画的是空白!
【问题讨论】: