簡體   English   中英

將 2 個 CTE 替換為 1 個

[英]Replace 2 CTEs to one

我在 postgresql 上有以下代碼:

    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 的值,但我不知道如何將 2 個 CTE 替換為一個? 或者其他方式。

復制你的代碼,它似乎有很多錯誤:

  • 插入的兩列之間沒有逗號;
  • value_2 不在您的任何一個 CTE 中。

這可以重構以刪除所有 CTE:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM