簡體   English   中英

將嵌套的子查詢轉換為普通查詢

[英]Convert a nested subquery into normal query

我對以下查詢有疑問,其中嵌套查詢應轉換為普通查詢:

    select 
count(*) as count,
TO_CHAR(RH.updated_datetime,'DD-MM-YYYY HH:MI:SS') as date,
SUM(
   extract (
      epoch from (
         RH.updated_datetime - PRI.procedure_performed_datetime
      )
   )/60
)::integer/count(*) as diff

from 
procedure_runtime_information PRI,
study S,
report R,
report_history RH
where 

RH.report_fk = R.pk AND
R.study_fk = S.pk AND
S.procedure_runtime_fk = PRI.pk AND
RH.old_status_fk = 21 AND 
RH.revision = (select max(revision) from report_history where RH.report_fk = RH.report_fk) AND
RH.updated_datetime > TO_DATE('22-01-2013 00:00:00', 'DD-MM-YYYY HH24:MI:SS') AND RH.updated_datetime < TO_DATE('22-01-2014 00:00:00', 'DD-MM-YYYY HH24:MI:SS')

group by date order by date asc;

假設這個

(select max(revision) from report_history where RH.report_fk = RH.report_fk)

確實應該是:

(select max(revision) from report_history x where x.report_fk = RH.report_fk)

您可以將嵌套( 相關 )子查詢轉換為普通的子查詢,如下所示(多種方式之一):

SELECT count(*) AS ct
      ,to_char(rh.updated_datetime,'DD-MM-YYYY HH:MI:SS') AS date  -- HH24?
      ,sum(extract(epoch FROM (RH.updated_datetime
                           -  PRI.procedure_performed_datetime))
                          / 60)::int / count(*) AS diff
FROM   procedure_runtime_information PRI
JOIN   study                         S   ON S.procedure_runtime_fk = PRI.pk
JOIN   report                        R   ON R.study_fk = S.pk
JOIN   report_history                RH  ON RH.report_fk = R.pk
JOIN  (
   SELECT report_fk, max(revision) AS revision
   FROM   report_history RH1
   GROUP  BY 1
   ) RH1 ON RH1.report_fk = RH.report_fk
        AND RH1.revision = RH.revision
WHERE  RH.old_status_fk = 21
AND    RH.updated_datetime > to_date('22-01-2013', 'DD-MM-YYYY') -- >= ?
AND    RH.updated_datetime < to_date('22-01-2014', 'DD-MM-YYYY') -- to_timestamp?
GROUP  BY date  -- where does date come from?
ORDER  BY date;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM