こんばんわ。現在、oracle8i,SQLを勉強中で基本的な事はできるようになったのですが、わからない所が出てきたのでよろしくお願いします。
売上票
年月日 当日売上 前日売上
------------------------
2000/04/11 100
2000/04/10 150
2000/04/09 90
2000/04/08 120
このようなテーブルがある時に前日売上に一つ前のレコードの当日売上の値を更新したいのですが、そのような事をSQL文(1文)で実現することはできるのでしょうか?updateするときに一つ前のレコードの値を取得することは出来るのでしょうか?いろいろとサイトを回って探してみたのですが、該当レコードの値を操作するものはみつかったのですが、他のレコードを操作するものは見つかりませんでした。
よろしくお願いします。見当違いな質問でしたらお許し下さい。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
>なにか一つ前のレコードを指定できるものがあるかと思っていました。
別に不可能なわけではない。
効率の問題はあるけど、次のようなSQLで更新できるハズ。
update 売上票 x
set
前日売上 =
(
select y.当日売上
from (select * from 売上票 order by 年月日 desc) y
where y.年月日 < x.年月日 and rownum=1
)
;
ただ、処理効率を落としてまで、前日売上を同一レコード上に
管理する必要があるか?というところで、検討の余地があるかと思います。
No.3
- 回答日時:
テーブル設計の善し悪しについては、話を棚上げして、
技術的に可能かどうかだけ書きますが...
>そのような事をSQL文(1文)で実現することはできるのでしょうか?
>updateするときに一つ前のレコードの値を取得することは出来るのでしょうか?
update 売上票 x
set
前日売上 =
(select y.当日売上 from 売上票 y where y.年月日 = x.年月日 - interval '1' days)
とかで良いのではないでしょうか。(未検証ですが)
お礼が遅くなり申し訳ありません。やはりそのように、whereで一日マイナスして指定するという風になるのですね。なにか一つ前のレコードを指定できるものがあるかと思っていました。まだまだ勉強が足りないようです。ありがとうございました。
No.2
- 回答日時:
「年月日/当日売上/前日売上」というテーブル定義を見直しましょう。
「年月日/当日売上」であるべきです。
データの見せ方とデータの持ち方を混同すると、頭の悪そうなデータ設計になってしまいますよ。
早速の回答ありがとうございます。設計自体に問題があるのですね。言われてみればその通りですね。ですからサイトを探しても見つからないわけですね。
もしこのようなことを無理矢理やろうと思えば「年月日/当日売上/前日売上」から「当日売上」をひとつずらして取得しそれを結合という形にせざるを得ないということでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- JavaScript html javascriptにてWeb SQLを操作したい。 2 2022/12/16 17:43
- Oracle sql(oracle)で質問です。 テーブルAのカラム名、日付(yyyymmdd)の値を テーブルB 2 2023/01/06 10:31
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- SQL Server これをSQL文で出来るでしょうか? 1 2023/03/26 02:16
- 宗教学 宗教団体が販売する商品は、不当廉売には当たらないの? 3 2022/07/12 10:42
- Oracle 列1と列2の関係性で列3の条件に一致するレコードを抽出したい 1 2022/04/13 07:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームで検索 エラーの表示...
-
SQL文 2つのテーブルから、グ...
-
集計のSQLをお教え下さい
-
列名無効について
-
SQLでグループ化した結果の件数...
-
ORA-01722: 数値が無効です
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
Oracle 2つのDate型の値の差を...
-
作番ってどういう意味でしょうか?
-
Accessでテーブル名やクエリ名...
-
ACCESSのクエリで集計で、先頭...
-
ACCESSに同時アクセス(編集)を...
-
IT用語について質問です。 以前...
-
Access IF文でテーブルに存在し...
-
Accessでコードを入れると名前...
-
Access テキスト型に対する指定...
-
「直需」の意味を教えてください
-
Vbaでアクセスからエクセルにリ...
-
ACCESSでの改行コード
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLでグループ化した結果の件数...
-
ORA-01722: 数値が無効です
-
項目名の制限について
-
MySQLで改行を含む文の登録のし...
-
フォームで検索 エラーの表示...
-
オラクルSQLの累計値取得方法に...
-
列名無効について
-
【 困 】 ストアドプロシージャ
-
Accessで期間指定の売上合計と...
-
♪Oracle SQL 処理が成功した時...
-
アクセスのクエリについて(前...
-
外部結合のSQLの書き方について
-
SQL文 2つのテーブルから、グ...
-
Accessで複数テーブルのJoin
-
SQLを教えてください
-
各店舗毎の最大売上の項目を取...
-
SQLを教えて下さい
-
以下のようなSQLについて教えて...
-
特殊なレコードの取得方法
-
改行コードを削除して取得する...
おすすめ情報