Выберите данные из таблиц, если определенные критерии верны, затем выберите максимальную дату для записей, которые верны - PullRequest
0 голосов
/ 15 ноября 2018

Я использую таблицу 10.5 пользовательских Sql, извлекаемых из базы данных Oracle, и хотел бы запросить пять таблиц на рисунке.Я видел здесь сообщения о получении данных, основанных на максимальной дате, если два значения одинаковы, но то, что я ищу, немного отличается.Я хочу выбрать:

mnemonic,
problem_id,
create_date,
env_name

, но когда мнемоника, problem_id и env_name одинаковы, я бы хотел получить только запись с последней датой create_date.В моем реальном сценарии есть другие значения, которые я хочу выбрать, но я упустил их из этого поста, чтобы упростить их. 1

Буду очень признателен за любую помощь или очки в правильном направлении!

Спасибо, Алекс

1 Ответ

0 голосов
/ 16 ноября 2018

Если я правильно понимаю, то вы хотите выбрать эти столбцы:

  • MNEMONIC из TABLE4
  • PROBLEM_ID из TABLE3
  • самый большой CREATE_DATE из CREATE_DATE, когда другие столбцыявляются одинаковыми
  • ENV_NAME из TABLE2

Просто используйте ВЛЕВО * и GROUP BY , чтобы получить то, что вы хотите:

SELECT TABLE4.MNEMONIC,
       TABLE3.PROBLEM_ID,
       MAX(TABLE1.CREATE_DATE) CREATE_DATE,
       TABLE2.ENV_NAME
  FROM TABLE1
  LEFT JOIN TABLE2
    ON (TABLE1.ENVIRONMENT_ID = TABLE2.ID)
  LEFT JOIN TABLE3
    ON (TABLE1.PROBLEM_ID = TABLE3.ID)
  LEFT JOIN TABLE4
    ON (TABLE1.MNEMONIC = TABLE4.ID)
 GROUP BY TABLE4.MNEMONIC,
          TABLE3.PROBLEM_ID,
          TABLE2.ENV_NAME;

P / s: Вы должны пересмотреть дизайн своего стола.Название столбца делает зрителя немного запутанным.Если я неправильно понимаю, у вас появилась идея присоединиться и получить информацию из нескольких таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...