我有一个包含这 4 个字段的价格历史表
- ID
- 日期
- 产品
- 价格
每件产品都有记录。我正在尝试编写一个查询来返回每个产品的起始价格的记录以及每次价格变化的记录。
我尝试按价格分组,但很明显,当价格变化而不是稍后的日期变回时,这会中断,因为它只会返回 1 条记录。
我已经编写了这个查询来生成我正在尝试处理的示例数据
CREATE TABLE #PriceHistory
(
[Id] INT IDENTITY,
[Date] DATETIME ,
[Product] NVARCHAR(30) ,
[Price] MONEY
)
INSERT INTO #PriceHistory([Date],[Product],[Price])
SELECT '20120101', 'Tesco', 1.99
UNION ALL
SELECT '20120102', 'Tesco', 1.97
UNION ALL
SELECT '20120103', 'Tesco', 1.97
UNION ALL
SELECT '20120105', 'Tesco', 1.99
UNION ALL
SELECT '20120104', 'Tesco', 1.99
UNION ALL
SELECT '20120106', 'Tesco', 1.99
UNION ALL
SELECT '20120101', 'BP', 1.99
UNION ALL
SELECT '20120102', 'BP', 1.01
UNION ALL
SELECT '20120103', 'BP', 1.99
SELECT * FROM #PriceHistory
DROP TABLE #PriceHistory
从该样本数据中,我期望的结果应该是
1 2012-01-01 Tesco 1.99
2 2012-01-02 Tesco 1.97
5 2012-01-04 Tesco 1.99
9 2012-02-11 BP 1.99
8 2012-02-20 BP 1.01
关于实现这一目标的最佳方法的任何想法?