使用Postgres

时间:2018-08-28 08:09:33

标签: sql postgresql common-table-expression postgresql-9.3

对于SQL Server,确实有类似的问题,但是我使用的是Postgres 9.3,而','无效

我正在比较两个单独的年份。例如2016年和2015年

我检查用户在2年的课程中是否获得了相同科目的不良成绩。

我的代码如下

with currentyeargrade ( 
      select ....
      from (...
             ...)t)

with previousyeargrade(
      select ....
      from (...
             ...)y)

select *
from currentyeargrade cyg
inner join previousyeargrade pvg on pvg.userid = cyg.userid

我是一名SQL开发人员,并且没有创建临时表的管理员权限。

1 个答案:

答案 0 :(得分:3)

使用CTE时,只需在前一个with中写CTE,然后使用,逗号连接多个CTE

with currentyeargrade as ( 
      select ....
      from (...
             ...)t),
previousyeargrade as(
      select ....
      from (...
             ...)y)
select *
from currentyeargrade cyg
inner join previousyeargrade pvg on pvg.userid = cyg.userid

这是给您的样品

CREATE TABLE T(col int);

insert into T values (1);

查询1

with currentyeargrade as  (SELECT * FROM T), 
previousyeargrade as (SELECT * FROM T)
select *
from previousyeargrade cyg
CROSS JOIN currentyeargrade pvg 

Results

| col | col |
|-----|-----|
|   1 |   1 |