簡體   English   中英

plsql-merge 成兩個不同列的表

[英]plsql-merge into two tables with different columns

我有兩個查詢,一個返回 output:

id | faults | avg_duration
--------------------------
x  | 55     |   45.3
y  | 102    |   11.2
z  | 333    |   25.3

另一個:

id | connection | duration
-----------------------
x  | 12         |   10
y  | 55         |   25
z  | 77         |   36

上面的查詢使用 where 子句來定義時間戳 (start,end) 即 start_date 之間的 to_date ('01/01/2011 10:10:00', 'dd/mm/yyyy 24hr:mm:ss' ) 和 to_date ('01/02/2011 10:10:00', 'dd/mm/yyyy 24hr:mm:ss') = 1 個月的持續時間

我想將這兩個結果插入到這樣的新表中,假設該表已經存在:

    start_date       | id | faults |avg_duration| connection | duration 
-------------------------------------------------------------------------
01/01/2011 10:10:00  |  x |   55   |   45.3     |    12      |   10
01/01/2011 10:10:00  |  y |   102  |   11.2     |    55      |   25
01/01/2011 10:10:00  |  z |   333  |   25.3     |    77      |   36

每次查詢的持續時間發生變化時,上表都將使用新數據進行更新:

    start_date       | id | faults |avg_duration| connection | duration 
-------------------------------------------------------------------------
01/01/2011 10:10:00  |  x |   55   |   45.3     |    12      |   10
01/01/2011 10:10:00  |  y |   102  |   11.2     |    55      |   25
01/01/2011 10:10:00  |  z |   333  |   25.3     |    77      |   36
01/05/2011 10:10:00  |  x |   10   |   4500     |    41      |   100
01/05/2011 10:10:00  |  y |   100  |   5000     |    41      |   250
01/05/2011 10:10:00  |  z |   300  |   2000     |    71      |   360

我會做這樣的事情:

INSERT
  INTO new_table
SELECT q1.start_date, q1.id, q1.faults, q1.avg_duration, q2
  FROM (query 1) q1,
       (query 2) q2
 WHERE q1.id = q2.id -- (or do a join above)
   AND -- if you want to exclude duplication
       NOT EXISTS (SELECT 1
                     FROM new_table a
                    WHERE a.start_date = q1.start_date
                      AND a.id = q1.id ... etc ...
                  )

認為那會奏效。 目前這是來自一個有點朦朧的大腦,但它提出的觀點應該是有效的 - 只需將您的兩個查詢組合在一起並將它們視為兩個正在連接的表,然后將結果插入到您的新表中(避免如果需要,可以復制)。

暫無
暫無

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

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