私はこのような2つのテーブルを持っています
ここに表1から表2に挿入したいと思います。これが私が望む方法です。
MOU=10とします。同じ行にnum1とhour1があります。num1と同じ行、hour1と同じ列のセルに挿入したいと思います。
どうすればそれができますか?
免責事項:このクエリの記述方法がわからないため、ここではコードを提供していません。私は確かに簡単な更新を書くことを知っています。私はテラコッタの初心者です。
私はこのような2つのテーブルを持っています
ここに表1から表2に挿入したいと思います。これが私が望む方法です。
MOU=10とします。同じ行にnum1とhour1があります。num1と同じ行、hour1と同じ列のセルに挿入したいと思います。
どうすればそれができますか?
免責事項:このクエリの記述方法がわからないため、ここではコードを提供していません。私は確かに簡単な更新を書くことを知っています。私はテラコッタの初心者です。
これはうまくいきました。
UPDATE a
FROM table2 a, table1 b
SET hour1=b.mou
WHERE a.access_method_id=b.access_method_id
AND hour='hour1'
時間ごとに同じことをしました。あまりエレガントではありません。しかし、これが私が得ることができるすべてです。
これは、仕事を成し遂げるはずの一般的な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
これを試して!
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;