根据teradata中表2的值更新table1

时间:2011-08-12 12:18:32

标签: sql data-warehouse teradata

我有两张这样的表

enter image description here

我想在这里从Table1插入Table2。这就是我想要的。

取MOU = 10.它在同一行中有num1和hour1。 我想将它插入与num1相同的行中的单元格以及与hour1相同的列。

我怎么能这样做?

免责声明:我不提供任何代码,因为我不确定如何编写此查询。我确实知道要写一个简单的更新。我是一个teracota新手。

3 个答案:

答案 0 :(得分:2)

这是一些应该完成工作的通用SQL。

insert into table2(access_method_id, hour1, hour2, ...)
select 
  access_method_id, 
  sum(case when hour='HOUR1' then MOU else 0 end) as hour1,
  sum(case when hour='HOUR2' then MOU else 0 end) as hour2,
  ...etc
from
  table1
group by
  access_method_id

答案 1 :(得分:2)

这很有用。

UPDATE a
FROM table2 a, table1 b
SET hour1=b.mou
WHERE a.access_method_id=b.access_method_id
AND hour='hour1'

每个小时都一样。不是很优雅。但这就是我能得到的。

答案 2 :(得分:-1)

试试这个!

update table2 t2
from (select 
  access_method_id, 
  sum(case when hour='HOUR1' then MOU else 0 end) as hour1,
  sum(case when hour='HOUR2' then MOU else 0 end) as hour2,
  ...etc
from
  table1) t1
set
t2.hour1=t1.hour1,
t2.hour2=t1.hour2,
t2.hour3=t1.hour3,
...etc
where t2.access_method_id=t1.access_method_id;