2013-06-01 54 views
0

report_history表的表結構如下:PostgreSQL的 - 報告的第一和最後一個版本之間的時間差

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 
); 

我想知道的是,我如何才能找到報告第一次修訂和同一報告最後一次修訂之間的差異(及時)?澄清,在pesudocode,我想執行以下減法:

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

任何人都可以幫我解決這個問題嗎?提前致謝。

+1

你應該張貼根據樣本數據的一些示例數據和預期的結果。理想情況下,http://sqlfiddle.com使這個非常模糊的問題更清楚一點。 –

回答

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; 
+0

對不起,我是堆棧溢出的新手 –

+0

感謝您的回覆 –

+0

這是獲取最大最小修訂版本,但我想要更新日期時間的最大修訂版本和最小修訂版本的值,以便我想找到差異他們之間可以你我可以 –

相關問題