Postgres语法内连接更新和临时表

时间:2016-02-19 20:11:56

标签: sql postgresql inner-join postgresql-9.3

我正在使用第9.3页,我想知道如何在一个语句中执行此操作,甚至可能没有临时表。这对我来说似乎有些混乱。

create temp table docUse (
docid int primary key, 
name text, cnt int, 
mindate timestamp, 
maxdate timestamp);

insert into docuse (docid,cnt) 
    select documenttypeID, count(documenttypeID) from AllDocs group by documenttype;

update docuse set name = DocName from documenttype where documenttypeid = docid;

update docuse 
set mindate = _minDate, maxdate = _MaxDate from(
     Select min(Creation_Date) _mindate, max(Creation_Date) _MaxDate, docid did
    from AllDocs inner join docuse on documenttypeid = docid group by docid
) foo where did = docid;

示例返回行看起来像

761,Invoice,598236,1/1/2000 12:00:00 am, 2/19/2016 3:15:54 pm

1 个答案:

答案 0 :(得分:1)

尝试:

insert into docuse (docid,cnt, mindate, maxdate, name  ) 
SELECT x.documenttypeID, x.cnt, x.mi, x.mx,
       ( SELECT DocName d from documenttype where d.documenttypeid = x.documenttypeID)
FROM ( 
    select documenttypeID, 
           count(documenttypeID) as cnt,
           min(Creation_Date) as mi,
           max(Creation_Date) as mx
    from AllDocs a
    group by documenttype
) x;