выбор ежедневных пересмотренных часовых значений за месяц - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть два запроса, первый из которых возвращает последний номер редакции для каждой даты за месяц

select  max(a.wdcm_revision_no)
from wb_declared_capacity_master a, wb_declared_capacity_det_unit b
where a.wdcm_internal_id = b.wdcd_ref_id and b.wdcm_unit = 'HSY_Unit1' and to_char(a.wdcm_date,'MM YYYY')='08 2019' group by a.wdcm_date

И второй запрос, который возвращает все данные независимо от какой-либо редакции

select a1.wdcm_date, b1.wdcd_block_no, c1.wdcd_capacity, c1.wdcd_approval, a1.wdcm_revision_no
from wb_declared_capacity_master a1, wb_declared_capacity_det_unit b1, wb_declared_capacity_detail c1
where a1.wdcm_internal_id = b1.wdcd_ref_id and a1.wdcm_internal_id = c1.wdcd_ref_id and b1.wdcm_unit = 'HSY_Unit1' and to_char(a1.wdcm_date,'MM YYYY')='08 2019'and b1.wdcd_block_no = c1.wdcd_block_no

Сейчас Я хочу передать последнюю ревизию каждой даты из первого запроса, когда условие второго запроса ожидает возврата всех значений, основанных на этом последнем номере ревизии

1 Ответ

0 голосов
/ 29 февраля 2020

Вы можете объединить затем в 1 запрос. Первый становится CTE, который затем подается во второй. Я полагаю, что следующее близко, но поскольку вы на самом деле не указали, где вы хотели «передать результат», я делаю предположение, которое кажется вероятным, но это все еще предположение.

with latest (revision) as
-- first query
    ( select max(a.wdcm_revision_no) 
        from wb_declared_capacity_master a
           , wb_declared_capacity_det_unit b
        where a.wdcm_internal_id = b.wdcd_ref_id 
          and b.wdcm_unit = 'HSY_Unit1' 
          and to_char(a.wdcm_date,'MM YYYY')='08 2019' 
        group by a.wdcm_date
    )
-- And second query which returns all the data irrespective of any revision
select a1.wdcm_date
     , b1.wdcd_block_no
     , c1.wdcd_capacity
     , c1.wdcd_approval
     , a1.wdcm_revision_no
  from wb_declared_capacity_master   a1
     , wb_declared_capacity_det_unit b1
     , wb_declared_capacity_detail   c1   
     , latest
 where a1.wdcm_internal_id = b1.wdcd_ref_id 
   and a1.wdcm_internal_id = c1.wdcd_ref_id 
   and b1.wdcm_unit = 'HSY_Unit1' 
   and to_char(a1.wdcm_date,'MM YYYY')='08 2019'
   and b1.wdcd_block_no = c1.wdcd_block_no 
   and a1.wdcm_revision_no = latest.revision;    ---- you didn't actually say where to "pass it in" this seems likely

Я сохранил используемый вами формат объединения, но вам действительно следует начать использовать современный стандартный формат объединения ANSI / ISO. (Современное значение, существующее ТОЛЬКО с 1992 года или около того).

...