0
我有一個表用3倍柱TSQL確定的價格趨勢
+---------------+-------------------------+-------+ | InstrumentId | Date | Price | +---------------+-------------------------+-------+ | 39 | 2012-10-31 00:00:00.000 | 150 | | 39 | 2012-11-01 00:00:00.000 | 160 | | 39 | 2012-11-01 00:00:00.000 | 200 | | 40 | 2012-10-31 00:00:00.000 | 150 | | 40 | 2012-11-01 00:00:00.000 | 140 | | 40 | 2012-11-01 00:00:00.000 | 200 | | 50 | 2012-10-31 00:00:00.000 | 150 | | 50 | 2012-11-01 00:00:00.000 | 150 | | 50 | 2012-11-01 00:00:00.000 | 150 | +---------------+-------------------------+-------+
我需要recive下一結果:
+--------------+-------+ | InstrumentId | Price | +--------------+-------+ | 39 | 200 | | 40 | 0 | | 50 | 150 | +--------------+-------+
規則: 如果價格相同InstrumentId生長或等於=>返回上一個價格(這意味着每個下一個價格大於或等於前一個價格 例如Id 39:150 < = 160 < = 200 => return 200) 如果同一InstrumentId的任何價格小於pr evious => return 0(see instrumentId 40)
我可以使用遊標來做到這一點...但我認爲存在一個簡單的解決方法來做到這一點。 任何想法?
測試數據:
DECLARE @table TABLE(
instrumentId INT NOT NULL,
priceListDate DATETIME NOT NULL,
price DECIMAL NOT NULL
)
INSERT INTO @table
(
instrumentId,
priceListDate,
price
)
VALUES(39, '2012-10-31 00:00:00.000', 150),
(39,'2012-11-01 00:00:00.000', 160),
(39,'2012-11-01 00:00:00.000', 200),
(40,'2012-10-31 00:00:00.000', 150),
(40,'2012-11-01 00:00:00.000', 140),
(40,'2012-11-01 00:00:00.000', 200),
(50,'2012-10-31 00:00:00.000', 150),
(50,'2012-11-01 00:00:00.000', 150),
(50,'2012-11-01 00:00:00.000', 150)
非常感謝,它工作正常! – driver