使用 Postgres 使用多个 WITH tablename AS (...) 语句

Use multiple WITH tablename AS (…) statements using Postgres

SQL 服务器确实有这样的问题,但我使用的是 Postgres 9.3,',' 没有用

我正在对不同的 2 年进行比较。例如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 开发人员,我没有创建临时文件的管理员权限 table。

使用CTE时只需要在第一个CTEwith,用,逗号连接多个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 |