例えば
開始日 | 終了日 | 単価 |
---|---|---|
2021/08/01 | Null | 150 |
2021/08/05 | 2021/08/10 | 120 |
2021/08/11 | 2021/08/19 | 130 |
2021/08/20 | Null | 140 |
のようなデータの時、指定日=2021/08/15
の場合
指定日付>=開始日 AND ISNULL(終了日)=FALSE で抽出
すると
開始日 | 終了日 | 単価 |
---|---|---|
2021/08/05 | 2021/08/10 | 120 |
2021/08/11 | 2021/08/19 | 130 |
と、2レコードHITします
2レコード以上は範囲入力側の制御の時点で入れられない形にしています
これは、つまり、このようなレコードは存在しないということでしょうか?だとすると、終了日に値の存在が許されるレコードは1つだけという歪なテーブル構造なんでしょうか?
質問の解自体はhatenaさんの回答の通りでしょう。ただ、手順や処理時間で見た簡略化は見込めないと思います。この観点から言えば
これ以上簡単にできる方法は
ないです
しかしながら、データ構造の観点から言えば、「一時的に変わる時」のデータは単純に追加するだけで済むというメリットができ、データ管理面での単純化なら見込めます
さらに言えば、既に指摘している通り、なぜ最終的なデータ構造でテーブルを作らないのか?という話になります。データ構造が単純で、データの取得もシンプルです
単純=「簡単」とは限らないですが、テーブル構造からはわからない独自ルールを運用するよりはよほど「簡単」でしょう。
単価情報を入力する側が期間限定明け後のデータ入力(ここでは8/11~8/19)を意識しなくてもいい形にしたいというものです
本当の主題はこれですよね?
ならば、職人芸のようなテーブル構造・データ取得を考えるよりも単純に「期間限定明け後のデータ入力(ここでは8/11~8/19)を」自動化したいと考えるべきでしょう
通報 ...