SQL服务器有一个这样的确切问题,但我使用的是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 开发人员,我没有创建临时表的管理员权限。
当您使用 CTE 时,您只需要在第一个CTE
中写入with
并使用逗号,
连接多个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
结果:
| col | col |
|-----|-----|
| 1 | 1 |