поле последней даты - PullRequest
0 голосов
/ 24 мая 2019

Прежде всего, я программист, я не учился на курсах SQL и самоучка.Все данные, которые я хочу, тянут просто отлично, но у меня установлен МАКС в поле даты, и он все еще дает мне все даты из таблицы.Я просто хочу самое последнее.У меня также есть несколько объединений, поэтому я уверен, что у меня что-то неправильно установлено.Любая помощь будет принята с благодарностью.

Я использую Pentaho в качестве автора

SELECT DISTINCT
     "RPT_CLIENT_PAYER_PLAN"."PAYER_PLAN_NAME",
     "RPT_CLIENT"."CLIENT_NUMBER",
     "RPT_CLIENT_PROGRAMS"."PROGRAM_ID",
     "RPT_CLIENT_DSM5_DIAG"."DSM5_P1_CODE",
     "RPT_CLIENT_DSM5_DIAG"."DSM5_P1_DESCRIPTION",
     "RPT_CLIENT_DSM5_DIAG"."DSM5_P2_CODE",
     "RPT_CLIENT_DSM5_DIAG"."DSM5_P2_DESCRIPTION",
     "RPT_CLIENT_DSM5_DIAG"."DSM5_P3_CODE",
     "RPT_CLIENT_DSM5_DIAG"."DSM5_P3_DESCRIPTION",
     "RPT_CLIENT_PROGRAMS"."PROGRAM",
     "RPT_CLIENT_PROGRAMS"."BEGIN_DATE",
     "RPT_CLIENT"."AGE",
     "RPT_CLIENT"."GENDER",
     "RPT_CLIENT"."MILITARY_SERVICES",
     "RPT_CLIENT"."MILITARY_STATUS",
     "RPT_SVCDOC_TOBACCO"."SMOKING_STATUS",
     "RPT_SVCDOC_REFERRAL"."REFER_COMMENT",
     "RPT_SVCDOC_REFERRAL"."REASON_FOR_REFERRAL",
     "RPT_CLIENT_PAYER_PLAN"."END_DATE",
     "RPT_CLIENT_PROGRAMS"."END_DATE",
     MAX("RPT_CLIENT_DSM5_DIAG"."EFFECTIVE_DATE") as max_date
FROM
     "RPT_CLIENT_PROGRAMS" INNER JOIN "RPT_CLIENT" ON "RPT_CLIENT_PROGRAMS"."CLIENT_ID" = "RPT_CLIENT"."CLIENT_ID"
     INNER JOIN "RPT_CLIENT_DSM5_DIAG" ON "RPT_CLIENT_PROGRAMS"."CLIENT_ID" = "RPT_CLIENT_DSM5_DIAG"."CLIENT_ID"
     INNER JOIN "RPT_CLIENT_PAYER_PLAN" ON "RPT_CLIENT_DSM5_DIAG"."CLIENT_ID" = "RPT_CLIENT_PAYER_PLAN"."CLIENT_ID"
     INNER JOIN "RPT_SVCDOC_TOBACCO" ON "RPT_CLIENT_PAYER_PLAN"."CLIENT_ID" = "RPT_SVCDOC_TOBACCO"."CLIENT_ID"
     INNER JOIN "RPT_SVCDOC_REFERRAL" ON "RPT_CLIENT"."CLIENT_NUMBER" = "RPT_SVCDOC_REFERRAL"."CLIENT_NUMBER"
WHERE
     "RPT_CLIENT_PROGRAMS"."PROGRAM_ID" IN (1087)
     and "RPT_CLIENT_PROGRAMS"."BEGIN_DATE" >= ${Begin_Date}
     and "RPT_CLIENT_PAYER_PLAN"."END_DATE" IS NULL

GROUP BY
    "RPT_CLIENT_PAYER_PLAN"."PAYER_PLAN_NAME",
     "RPT_CLIENT"."CLIENT_NUMBER",
     "RPT_CLIENT_PROGRAMS"."PROGRAM_ID",
     "RPT_CLIENT_DSM5_DIAG"."DSM5_P1_CODE",
     "RPT_CLIENT_DSM5_DIAG"."DSM5_P1_DESCRIPTION",
     "RPT_CLIENT_DSM5_DIAG"."DSM5_P2_CODE",
     "RPT_CLIENT_DSM5_DIAG"."DSM5_P2_DESCRIPTION",
     "RPT_CLIENT_DSM5_DIAG"."DSM5_P3_CODE",
     "RPT_CLIENT_DSM5_DIAG"."DSM5_P3_DESCRIPTION",
     "RPT_CLIENT_PROGRAMS"."PROGRAM",
     "RPT_CLIENT_PROGRAMS"."BEGIN_DATE",
     "RPT_CLIENT"."AGE",
     "RPT_CLIENT"."GENDER",
     "RPT_CLIENT"."MILITARY_SERVICES",
     "RPT_CLIENT"."MILITARY_STATUS",
     "RPT_SVCDOC_TOBACCO"."SMOKING_STATUS",
     "RPT_SVCDOC_REFERRAL"."REFER_COMMENT",
     "RPT_SVCDOC_REFERRAL"."REASON_FOR_REFERRAL",
     "RPT_CLIENT_PAYER_PLAN"."END_DATE",
     "RPT_CLIENT_PROGRAMS"."END_DATE",
     "RPT_CLIENT_DSM5_DIAG"."EFFECTIVE_DATE"     

Надеюсь получить только последнюю дату вступления в силу DMS-5, но все же дать мне все.

1 Ответ

1 голос
/ 24 мая 2019

У вас есть max в столбце EFFECTIVE_DATE, но он также является частью group by.Поскольку он является частью group by, каждое уникальное значение столбца будет отображаться само по себе.Удалите его из group by, и он должен работать.

...