【SQL】複数行から最大値の取得
以下のSQLを実行すると
ENDDATE PNO
2013/02/01 00000001
2013/02/01 00000002
2013/02/03 00000001
2013/02/01 00000003
2013/02/05 00000002
2013/02/01 00000001
2013/02/02 00000002
の様になります。
これを
ENDDATE PNO
2013/02/03 00000001
2013/02/01 00000003
2013/02/05 00000002
の様にENDDATEの最大値のみを残しPNOが重複しないものを抽出したいです。
以下のSQLをどの様に修正すれば可能でしょうか?
==SQL==================================================
SELECT CO1.ENDDATE,AD1.PNO
FROM COMMON CO1,ADMADMISSION AD1
WHERE CO1.DETAILOF IN ('10')
AND AD1.CURRENTWARD=:CURRENTWARD
AND CO1.STARTDATE BETWEEN TO_CHAR(TO_DATE(:CURRENTDATE)-:ENDLINE,'YYYY/MM/DD') AND TO_CHAR(TO_DATE(:CURRENTDATE)+:DEADLINE,'YYYY/MM/DD')
UNION
SELECT CO2.ENDDATE,CO2.PNO
FROM COMMON CO2,ADMADMISSION AD2
WHERE CO2.DETAILOF IN ('10')
AND AD2.CURRENTWARD=:CURRENTWARD
AND CO2.ENDDATE BETWEEN TO_CHAR(TO_DATE(:CURRENTDATE)-:ENDLINE,'YYYY/MM/DD') AND TO_CHAR(TO_DATE(:CURRENTDATE)+:DEADLINE,'YYYY/MM/DD')
UNION
SELECT CO3.ENDDATE,CO3.PNO
FROM COMMON CO3,ADMADMISSION AD3
WHERE CO3.DETAILOF IN ('10')
AND AD3.CURRENTWARD=:CURRENTWARD
AND :CURRENTDATE BETWEEN CO3.STARTDATE AND CO3.ENDDATE
お礼
TO_CHARで取得後に、TO_DATEを使用して出来ました。 早急な御回答で、大変助かりました。ありがとうございました。 TO_DATE(TO_CHAR(aaa_date,'YYYY/MM/DD'), 'YYYY/MM/DD')-1
補足
ご回答有難う御座います。 下記の様に、-1して前日を取得したい為、TO_DATEを 使用したいのですが、TO_CHARだと前日を指定できないのですが、 方法はありますでしょうか。 TO_DATE(aaa_date,'YYYY/MM/DD')-1