开发者

plsql-merge into two tables with different columns

I have two queries, the one returns output:

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

the other:

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

The above queries use a where clause in order to define the time stamp (start,end) i.e. where Start_date between to_date ('01/01/2011 10:10:00', 'dd/mm/yyyy 24hr:mm:ss') and to_date ('01/02/2011 10:10:00', 'dd/mm/yyyy 24hr:mm:ss') = 1 month duration

I want to insert the two results in a new table like this, assuming that the table already exists:

    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

Each time the duration of the queries changes, the above table will be updated with the new data:

    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


I would do something like this:

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 ...
                  )

I think that would work. This is coming from a slightly hazy brain at the moment, but the point it makes should be valid -- just combine your two queries together and treat them as two tables being joined, and then insert the results from that into your new table (avoiding duplicates if required).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜