首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将2个CTE替换为1个

将2个CTE替换为1个
EN

Stack Overflow用户
提问于 2018-02-20 21:21:22
回答 1查看 53关注 0票数 1

我在postgresql上有以下代码:

代码语言:javascript
复制
    WITH CTE1 AS
(
SELECT
               value_1
              ,position
              ,value_3
              ,value_4
              ,value_5
From tabl_1
WHERE position = 1 
)

WITH CTE2 AS
(
SELECT
               value_1
              ,position
              ,value_3
              ,value_4
              ,value_5
From tabl_1
WHERE position = 2 
)   

INSERT INTO tbl_2
SELECT
CTE1.value_2 = IP_1
CTE2.value_2 = IP_2

FROM table_3 er
                LEFT JOIN CTE1 ON CTE1.value_1 = er.value_1 AND CTE1.value_3 = er.value_3
                LEFT JOIN CTE2 ON CTE2.value_1 = er.value_1 AND CTE2.value_3 = er.value_3

我在单独的CTE中计算了IP_1,IP-2的值,但我不知道如何在一个CTE上替换2个CTE?或者其他方式。

EN

回答 1

Stack Overflow用户

发布于 2018-02-20 21:37:24

复制您的代码,这似乎有许多错误:

inserted;

  • value_2的两列之间没有逗号
  • 不在您的CTE中。

可以对其进行重构以移除所有CTE:

代码语言:javascript
复制
INSERT INTO 
    tbl_2
SELECT
    t1.value_2 = IP_1
    t2.value_2 = IP_2
FROM 
    table_3 er
    LEFT JOIN tabl_1 t1 ON t1.value_1 = er.value_1 AND t1.value_3 = er.value_3 AND t1.position = 1
    LEFT JOIN tabl_1 t2 ON t2.value_1 = er.value_1 AND t2.value_3 = er.value_3 AND t2.position = 2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48886286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档