同じテーブル内であるフィールドのデータをキーにまとめたデータを別のデータをキーにして
集めた情報へコピーしたいときってありますよね?
アクセスだとこんな感じで簡単にできてしまうんですが、
伝わりますか?
具体的なテーブルの中身を書いて説明すると、東京の休日フラグを大阪にもコピーしたいということです。
事業所 | 日付 | 休日フラグ |
東京 | 2005/4/1 | 出勤 |
東京 | 2005/4/2 | 出勤 |
東京 | 2005/4/3 | 休日 |
大阪 | 2005/4/1 | 未定 |
大阪 | 2005/4/2 | 未定 |
大阪 | 2005/4/3 | 未定 |
Oracleで使用できるSQLだと下のような感じ。他のDBで使用できるかは不明。
クエリーの呼び方も調べた時には見たのですが忘れたのでとりあえずパス。_| ̄|○
update カレンダー コピー先
set コピー先.休日フラグ = (select 休日フラグ from カレンダー where 事業所 = '東京' and 日付 = コピー先.日付 )
where コピー先.事業所 = '大阪' and コピー先.日付 Between '2005/04/01' And '2005/04/30'
とりあえず、似た状況に陥った時は↑のサンプルを元に考えてみることにします。自分は。
コメント (2)
DB2でも多分動くかなぁ。
エイリアスのスコープが微妙かもしれんけど。
ボクの場合、普段はINSERTとサブクエリを組み合わせる方が多いかなぁ・・・コスト削減には必要な構文ですか。
投稿者: Q | 2005年04月20日 02:48
日時: 2005年04月20日 02:48
なるほど。
今回のはたまにしか実行しないので良いですが。頻繁に実行してデータ量が多い場合とかは、ワークを作ったりしてワンクッションおいたりが必要でしょうね。
エイリアスと言えば、普通?「as」を使うと思うのですが、Oracleでは使えないっぽいんですよね。他のサイトさんとかは見ても大丈夫っぽいこと書いてあるのですが・・・。バージョンの差かなとか。
投稿者: あやね | 2005年04月20日 10:11
日時: 2005年04月20日 10:11