Microsoft SQL Serverには、レコードID、開始日、終了日、および数量のテーブルが存在します。
アイデアは、各レコードについて、範囲内の数量/合計日数=1日あたりの数量です。
可能なすべての日付を含むテーブルが存在する場合、SQL Serverで次の例のような結果セットを生成するにはどうすればよいですか?
元:
RecordID | Start Date | End Date | Quantity
1 | 1/1/2010 | 1/5/2010 | 30000
2 | 1/3/2010 | 1/9/2010 | 20000
3 | 1/1/2010 | 1/7/2010 | 10000
Results as
1 | 1/1/2010 | QTY (I can do the math easy, just need the dates view)
1 | 1/2/2010 |
1 | 1/3/2010 |
1 | 1/4/2010 |
1 | 1/3/2010 |
2 | 1/4/2010 |
2 | 1/5/2010 |
2 | 1/6/2010 |
2 | 1/7/2010 |
2 | 1/8/2010 |
2 | 1/9/2010 |
3 | 1/1/2010 |
3 | 1/2/2010 |
3 | 1/3/2010 |
3 | 1/4/2010 |
3 | 1/5/2010 |
3 | 1/6/2010 |
3 | 1/7/2010 |
取得できる日付でグループ化すると、その日の数量の合計を取得できますが、将来これらのレコードの一部を除外する可能性のあるユーザー提供のフィルターのため、最終的な結果セットを集計できません。
編集
明確にするために、これは単なるサンプルです。結果のレコードIDに関連する詳細を取得するためにサイドに参加できるため、フィルターは関係ありません。
実際のデータには毎週増加するN個のレコードが含まれており、日付が同じになることはありません。開始日と終了日が異なる2000のレコードが存在する可能性があります...それがビューを生成したいものです。データに直接参加して、必要な残りの作業を行うことができます
また、これは過去、現在、未来のデータに関するものです。一時的な日付の表を削除したいと思います。再帰クエリを使用して50年以内に存在するすべての日付を取得していましたが、これはビューのMAXRECURSION制限を超えており、使用できません。