質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

1030閲覧

SQL ある条件の時のUPDATE

yamaguti

総合スコア185

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2018/05/07 05:02

編集2018/05/07 05:31

お世話になります。

株価を毎日インポートしているテーブルがあるのですが、前日と値段が変わらなかった場合に
データ元の仕様として'-'となります。
この場合、前日の株価データを使ってUPDATEを行いたいのですがどうすればいいでしょうか。
case等を使うのは分かるのですが、どのように書けばいいか分からず質問させて頂きます。

※連続で株価が動かなかった場合は、-が続く場合がございます。正しくは前日ではなく、-ではない最新の営業日となります。

DATE SC KABUKA 20180101,7919,100 20180102,7919,-

SQL

1update 株価テーブル 2set KABUKA = 3where KABUKA = '-'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/05/07 05:06

前日の株価データを使ってどのような情報にUPDATEするのでしょうか?(私の理解力がないだけであればすみません)
yamaguti

2018/05/07 05:14

上の例でいきますと、2018年1月2日の株価は-なのですが、これを前日の2018年1月1日の株価を使ってUPDATEしたいです。ピンポイントで指定するクエリであれば私でも組めるのですが、汎用的に使用できるクエリが思いつかず質問させて頂きました。
m.ts10806

2018/05/07 05:17

必ず対象の日の前日という意味ですね。必ず「前日」があれば良いですが、ない場合は「データ的に1つ前の」ということでよろしいでしょうか。あと、このUPDATEがされるタイミングが分かりませんが、「-」となることが連日続くことはありませんか?
yamaguti

2018/05/07 05:22

情報が不足しており申し訳ございません。ご指摘の通り、連続で株価が動かなかった場合は、-が続く場合がございます。正しくは前日ではなく、-ではない最新の営業日となります。
m.ts10806

2018/05/07 05:30

おおよそ分かりました。要件として大事な部分となりますのでお手数ですが質問本文に追記していただけますか?こちらのコメント欄だと他の閲覧者の目につきにくくなります。
m.ts10806

2018/05/07 05:31

もう1点すみません。インポート前に対応するのは難しいのでしょうか?
yamaguti

2018/05/07 05:31

承知致しました。修正させて頂きます。
yamaguti

2018/05/07 05:34

またインポートする前に対応というのは、クエリ以外の方法でということでしょうか?理解力不足で申し訳ございません
m.ts10806

2018/05/07 05:36

言葉不足申し訳ありません。「毎日インポートしている」ということはどこかでインポートしているプログラムが動いているわけですよね?今やろうとしているのはインポートされたデータに対して後で修正をかけようとしているように見受けられます。後からではなくインポート時点で正規化したデータを取り込んだ方が楽なのでは?という疑問です。
yamaguti

2018/05/07 05:42

なるほど。私が行っているインポートに関しましては、プログラムで自動で行っているわけではなく、サイトにてCSVをダウンロード(日時で手動でやっている)しSQLのツールにてCSVインポートを行っております。
退会済みユーザー

退会済みユーザー

2018/05/07 06:00

ささやかな疑問ですが、こういうデータの持ち方で、瞬時値(指定の日の株価)を求める要件って不要なのでしょうか?
guest

回答1

0

ベストアンサー

KABUKA='-'の場合に必ず、金額データが存在する前提で。

SQL

1update 株価テーブル tgt set KABUKA=( 2 select KABUKA from 株価テーブル 3 where (SC,DATE) in ( 4 select SC, max(DATE) from 株価テーブル 5 where SC=tgt.SC and DATE<tgt.DATE and KABUKA!='-' 6 group by SC 7 ) 8 ) 9where KABUKA='-'

投稿2018/05/07 06:14

編集2018/05/07 06:19
sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問