0

我的表的表结构report_history如下:

CREATE TABLE "report_history"(
"pk"                 SERIAL          PRIMARY KEY,
"revision"           BIGINT,
"report_fk"          BIGINT,
"old_status_fk"      BIGINT,
"updatedby_fk"       BIGINT,
"updated_datetime"   TIMESTAMP,
"file_path"          TEXT,
"synopsis"           TEXT
);

report表本身的定义如下:

CREATE TABLE "report"(
"pk"                    SERIAL          PRIMARY KEY,
"report_uuid"           VARCHAR(32)     UNIQUE,
"study_fk"              BIGINT,
"status_fk"             BIGINT,
"priority_fk"           BIGINT,
"report_relative_path"  VARCHAR(256),
"report_type_fk"        BIGINT,
"createdby_fk"          BIGINT,
"created_datetime"      TIMESTAMP
);

我想知道的是如何找到报告的第一次修订和同一报告的最后一次修订之间的差异(及时)?为了澄清,在伪代码中,我想执行以下减法:

RETURN report_history.updated_datetime (newest) - report_history.updated_datetime
(oldest) WHERE report_fk = ?

谁能帮我解决这个问题?提前致谢。

4

1 回答 1

0

你的问题模糊,但这样的事情可能会让你开始:

select r.*, rh.max_updated, rh.min_updated
from report as r
  join (
     select report_fk, 
            min(updated_datetime) as min_updated,
            max(updated_datetime) as max_updated
     from report_history
     group by report_fk
  ) as rh on rh.report_fk = r.pk;
于 2013-06-01T09:44:31.813 回答