使用的版本:Microsoft SQL Server Management Studio、SQL Server 2008
我面临一个由不对称列引起的令人沮丧的问题。基本上,我想计算折扣对给定现货价格的影响。两者都设置为同一个表 pricevalues中的索引。现货价格每周 5 天提供,而折扣仅在更新当天说明。因此,例如:
价格值(价格指数,价格,价格日期)
PRICEINDEX PRICE PRICEDATE
-------------------- ------------------ ------------------
DISCOUNT_INDEX_ID | 15.5 | 2013-02-26
DISCOUNT_INDEX_ID | 10.5 | 2013-04-05
DISCOUNT_INDEX_ID | 16.0 | 2013-07-10
SPOT_INDEX_ID | 356.5 | 2013-07-22
SPOT_INDEX_ID | 355.0 | 2013-07-23
SPOT_INDEX_ID | 354.6 | 2013-07-24
SPOT_INDEX_ID | 357.0 | 2013-07-25
SPOT_INDEX_ID | 358.5 | 2013-07-26
如果要使用最新给出的(相对于现货价格的 PRICEDATE)折扣 PRICE,我将如何最好地计算 SPOT_INDEX_ID 给出的所有日期的 SPOT_INDEX_ID 和 DISCOUNT_INDEX_ID 的 PRICE 之间的差异?
例如,2013-07-22 的现货折扣为16.0(2013-07-10),而 2013-05-15 的现货折扣为10.5(2013-04-05), 2013-03-03 上的现货是15.5 (2013-02-26)
我只知道当 PRICEDATE 匹配 DISCOUNT_INDEX_ID 和 SPOT_INDEX_ID 时该怎么做,所以:
SELECT
(pv1.price - pv2.price) AS 'Total Price',
pv1.price AS 'Spot Price',
pv2.price AS 'Discount'
FROM
pricevalues pv1, pricevalues pv2
WHERE
pv1.priceindex = 'SPOT_INDEX_ID' AND
pv1.pricedate = pv2.pricedate AND
pv2.priceindex = 'DISCOUNT_INDEX_ID'
这当然是不可能的,因为折扣指数中有这些巨大的差距,所以当日期不匹配时,我如何获得最新给定折扣的价值?
编辑:我希望输出如下所示:
PRICEDATE SPOT_INDEX DISCOUNT_INDEX SPOT_PRICE
---------------- ------------------- --------------------- ----------- --->>>
2013-07-26 | SPOT_INDEX_ID | DISCOUNT_INDEX_ID | 358.5 |
DISCOUNT_PRICE TOTAL_PRICE
---------------- -------------------
16.0 | 342.5 |