Question

I am trying to select the SECTION,LAST_MDS_MON,DAYS_BETWEEN where the LAST_MDS_MON is MAX for a distinct SECTION, from the query below...PLEASE HELP!

SELECT STATE_CODE||SHRP_ID AS SECTION,MAX(SURVEY_DATE) AS LAST_MDS_MON,((ADD_MONTHS(CURRENT_DATE,18))-TO_DATE(MAX(SURVEY_DATE))) AS DAYS_BETWEEN
FROM MON_DIS_AC_REV
GROUP BY STATE_CODE,SHRP_ID
UNION ALL
SELECT STATE_CODE||SHRP_ID AS SECTION,MAX(SURVEY_DATE) AS LAST_MDS_MON,((ADD_MONTHS(CURRENT_DATE,18))-TO_DATE(MAX(SURVEY_DATE))) AS DAYS_BETWEEN
FROM MON_DIS_JPCC_REV
GROUP BY STATE_CODE,SHRP_ID
UNION ALL
SELECT STATE_CODE||SHRP_ID AS SECTION,MAX(SURVEY_DATE) AS LAST_MDS_MON,((ADD_MONTHS(CURRENT_DATE,18))-TO_DATE(MAX(SURVEY_DATE))) AS DAYS_BETWEEN
FROM MON_DIS_CRCP_REV
GROUP BY STATE_CODE,SHRP_ID
Was it helpful?

Solution

SELECT
  SECTION,
  LAST_MDS_MON,
  DAYS_BETWEEN
FROM
  (
  SELECT
    SECTION,
    LAST_MDS_MON,
    DAYS_BETWEEN,
    RANK() OVER (PARTITION BY SECTION ORDER BY LAST_MDS_MON desc) AS RANK
  FROM
    (
    SELECT STATE_CODE||SHRP_ID AS SECTION,MAX(SURVEY_DATE) AS LAST_MDS_MON,((ADD_MONTHS(CURRENT_DATE,18))-TO_DATE(MAX(SURVEY_DATE))) AS DAYS_BETWEEN
    FROM MON_DIS_AC_REV
    GROUP BY STATE_CODE,SHRP_ID
    UNION ALL
    SELECT STATE_CODE||SHRP_ID AS SECTION,MAX(SURVEY_DATE) AS LAST_MDS_MON,((ADD_MONTHS(CURRENT_DATE,18))-TO_DATE(MAX(SURVEY_DATE))) AS DAYS_BETWEEN
    FROM MON_DIS_JPCC_REV
    GROUP BY STATE_CODE,SHRP_ID
    UNION ALL
    SELECT STATE_CODE||SHRP_ID AS SECTION,MAX(SURVEY_DATE) AS LAST_MDS_MON,((ADD_MONTHS(CURRENT_DATE,18))-TO_DATE(MAX(SURVEY_DATE))) AS DAYS_BETWEEN
    FROM MON_DIS_CRCP_REV
    GROUP BY STATE_CODE,SHRP_ID
    )
  )
WHERE
  RANK = 1
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top