我有两个查询,一个返回输出:
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子句来定义时间戳(开始,结束),即to_date之间的Start_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
答案 0 :(得分:1)
我会做这样的事情:
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 ...
)
我认为会起作用。这是来自一个稍微朦胧的大脑,但它所做的一点应该是有效的 - 只需将两个查询组合在一起并将它们视为两个连接的表,然后将结果插入到新表中(避免如果需要,重复。)