2017-04-13 6 views
2

に基づいてユニークな値の要約リストを取得し、私は4列で構成され、テーブルがあります:NAMEを、STARTYEAR、ENDYEAR、IDNUMオラクルのsqldeveloper:どのようにYEAR範囲

は、どのように私は明確なリストSTARTYEARを得るのですかその異なるNAMEとIDNUMのMIN年、ENDYEARは別個のNAMEとIDNUMのMAX年です。

例テーブル:

CREATE TABLE ZZ_YEARRANGE (
NAME varchar(10), 
STARTYEAR varchar(5), 
ENDYEAR varchar(5), 
IDNUM varchar(10)); 

INSERT ALL 
INTO ZZ_YEARRANGE (NAME,STARTYEAR,ENDYEAR,IDNUM) VALUES ('Derick','1995','1998','ABC-100') 
INTO ZZ_YEARRANGE (NAME,STARTYEAR,ENDYEAR,IDNUM) VALUES ('Derick','1999','2005','ABC-100') 
INTO ZZ_YEARRANGE (NAME,STARTYEAR,ENDYEAR,IDNUM) VALUES ('Derick','1998','2003','ABC-101') 
INTO ZZ_YEARRANGE (NAME,STARTYEAR,ENDYEAR,IDNUM) VALUES ('Rick','2001','2010','DEF-200') 
INTO ZZ_YEARRANGE (NAME,STARTYEAR,ENDYEAR,IDNUM) VALUES ('Rick','2007','2015','DEF-200') 
INTO ZZ_YEARRANGE (NAME,STARTYEAR,ENDYEAR,IDNUM) VALUES ('Rick','2002','2008','DEF-201') 
INTO ZZ_YEARRANGE (NAME,STARTYEAR,ENDYEAR,IDNUM) VALUES ('Chad','1990','2001','ABC-100') 
INTO ZZ_YEARRANGE (NAME,STARTYEAR,ENDYEAR,IDNUM) VALUES ('Chad','2002','2004','GHI-301') 
INTO ZZ_YEARRANGE (NAME,STARTYEAR,ENDYEAR,IDNUM) VALUES ('Chad','1997','2003','GHI-300') 
INTO ZZ_YEARRANGE (NAME,STARTYEAR,ENDYEAR,IDNUM) VALUES ('Brandon','1985','1995','JKL-400') 
INTO ZZ_YEARRANGE (NAME,STARTYEAR,ENDYEAR,IDNUM) VALUES ('Brandon','1999','2009','JKL-401') 
INTO ZZ_YEARRANGE (NAME,STARTYEAR,ENDYEAR,IDNUM) VALUES ('Brandon','1996','2002','JKL-400') 
INTO ZZ_YEARRANGE (NAME,STARTYEAR,ENDYEAR,IDNUM) VALUES ('Brandon','2003','2007','JKL-400') 
select 1 from DUAL; 

表は次のようになります。

Derick 1995 1998 ABC-100 
Derick 1999 2005 ABC-100 
Derick 1998 2003 ABC-101 
Rick 2001 2010 DEF-200 
Rick 2007 2015 DEF-200 
Rick 2002 2008 DEF-201 
Chad 1990 2001 ABC-100 
Chad 2002 2004 GHI-301 
Chad 1997 2003 GHI-300 
Brandon 1985 1995 JKL-400 
Brandon 1999 2009 JKL-401 
Brandon 1996 2002 JKL-400 
Brandon 2003 2007 JKL-400 

そして、私が取得しようとしています。結果は次のとおりです。

Derick 1995 2005 ABC-100 
Derick 1998 2003 ABC-101 
Rick 2001 2015 DEF-200 
Rick 2002 2008 DEF-201 
Chad 1990 2001 ABC-100 
Chad 2002 2004 GHI-301 
Chad 1997 2003 GHI-300 
Brandon 1985 2007 JKL-400 
Brandon 1999 2009 JKL-401 

答えて

4

それは同じくらい簡単ですあなたは別の列をGROUP BYに入れ、を追加しますおよびMAXを必要に応じて他の列に追加してください:

select NAME, min(STARTYEAR) STARTYEAR, max(ENDYEAR) ENDYEAR, IDNUM 
from ZZ_YEARRANGE 
group by NAME, IDNUM 
order by NAME, IDNUM 

NAME  STARTYEAR ENDYEAR IDNUM  
---------- --------- ------- ---------- 
Brandon 1985  2007 JKL-400  
Brandon 1999  2009 JKL-401  
Chad  1990  2001 ABC-100  
Chad  1997  2003 GHI-300  
Chad  2002  2004 GHI-301  
Derick  1995  2005 ABC-100  
Derick  1998  2003 ABC-101  
Rick  2001  2015 DEF-200  
Rick  2002  2008 DEF-201 
+1

ありがとうsoooo!何らかの理由で私はそれがはるかに難しいと思った。 – ApolloC

関連する問題