長年の読者、初めてのポスター。SQL の第一人者が、カーソルを使わずに SQL の問題をエレガントに解決するための処理能力を貸してくれることを願っています。
お金と日付のデータセットから時系列タイプの結果セットを作成しようとしていますが、それらが表示される順序が重要です。以下のサンプルデータと期待値を参照してください。
DECLARE @OrderData TABLE(
ID INT IDENTITY,
ProductId INT,
WarehouseId INT,
Cost MONEY,
SaleDate DATETIME
)
INSERT INTO @OrderData
VALUES
(1, 1, 2.71, '2012-02-23 10:01')
,(1, 2, 2.71, '2012-02-23 10:02')
,(1, 1, 2.71, '2012-02-23 10:03')
,(1, 1, 2.71, '2012-02-23 10:04')
,(1, 1, 2.71, '2012-02-23 10:05')
,(1, 1, 2.8, '2012-02-23 10:06')
,(1, 1, 2.9, '2012-02-23 10:07')
,(1, 1, 2.71, '2012-02-23 10:08')
,(1, 1, 2.71, '2012-02-23 10:09')
私が探している結果は、独自の販売セット内の製品と倉庫の組み合わせの開始日と終了日を含む販売の時系列です。データセットで販売価格が変更されるとすぐに、結果セットに新しい行が生成されます。
サンプル データの結果構造。
Product, warehouse, minsale date, Max sale date
1,1,2.71, 2012-02-23 10.01, 2012-02-23 10.05
1,1,2.80, 2012-02-23 10.06, 2012-02-23 10.06
1,1,2.90, 2012-02-23 10.07, 2012-02-23 10.07
1,1,2.71, 2012-02-23 10.08, 2012-02-23 10.09
1,2,2.71, 2012-02-23 10.02, 2012-02-23 10.02
利用可能なヘルプを乾杯します。