Запрос" SELECT DISTINCT " возвращает слишком много уникальных строк
На данном этапе я работаю над относительно простым запросом, и мне интересно, как я могу получить одну строку данных, когда есть изменение в данных столбца (статус). Я знаю, что это звучит как путаница, я просто не знаю, как выразить это в правильных терминах, поэтому я просто покажу вам!
Я пытаюсь извлечь самую высокую метку даты в столбце (whse_load_ts), где столбец (whse_ac) не имеет значения Y. Я хочу, чтобы это вернуло одну строку.
C_CLM C_STA_CLM WHSE_ACTN_CD WHSE_CURR_ROW_IND WHSE_LOAD_TS
12056733 AC U 2012-05-30 03:18:12
В настоящее время он возвращает две строки из-за изменения статуса c_sta_clm.
C_CLM C_STA_CLM WHSE_ACTN_CD WHSE_CURR_ROW_IND WHSE_LOAD_TS
12056733 AC U 2012-05-30 03:18:12
12056733 PC U 2012-04-28 03:19:38
Все данные для этого конкретного утверждения выглядят следующим образом:
12056733 PC I 2012-02-04 03:20:25.150
12056733 PC U 2012-02-07 03:19:43.230
12056733 PC U 2012-02-11 03:21:31.440
12056733 PC U 2012-04-28 03:19:38.380
12056733 AC U 2012-05-17 03:18:25.920
12056733 AC U 2012-05-19 03:20:33.200
12056733 AC U 2012-05-30 03:18:12.370
12056733 TE U Y 2012-06-06 03:20:07.520
Запрос выглядит следующим образом
SELECT
c_clm,
c_sta_clm,
whse_curr_row_ind,
max(whse_load_ts) as "Loaded"
FROM
pearl_p.TLTC900_CLM_PRSST
WHERE
whse_curr_row_ind not in('y')
AND c_clm = '12056733'
group by 1,2,3
В основном это вытягивание максимальной даты для каждого статуса AC/PC, когда я просто хочу максимальную дату для чего-либо без Y в столбце whse_curr_row_ind
1 ответ:
Это можно сделать с помощью подзапроса:
SELECT p1.c_clm, p1.c_sta_clm, p1.whse_curr_row_ind, p2.Loaded FROM pearl_p.TLTC900_CLM_PRSST p1 INNER JOIN ( select max(whse_load_ts) as Loaded, C_CLM from pearl_p.TLTC900_CLM_PRSST where whse_curr_row_ind not in('y') group by C_CLM ) p2 on p1.whse_load_ts = p2.Loaded and p1.C_CLM = p2.C_CLM WHERE p1.whse_curr_row_ind not in('y')