2015-10-14 60 views
1

我有一个下面的SQL查询,它返回两个不同指数的指数价格。在SQL数据透视查询中的数据规范化

select * 
from INDICEPRICEHISTORY 
PIVOT (MAX(PRICE) 
FOR TICKER IN 
([OMXH25],[UX]) 
) 
as Pricelist 
ORDER BY EOD DESC; 

查询返回:

EOD   OMXH25 UX 
2015-10-10 3157.20 843.48 
2015-10-09 3157.20 843.48 
2015-10-08 3138.35 837.37 
2015-10-07 3138.47 835.43 

有没有办法正常化的一些基点SQL查询这个数据,例如2015年10月7日为100点和其他值与那。下面样机:

EOD   OMXH25  UX 
2015-10-10 100.5967876 100.9635756 
2015-10-09 100.5967876 100.9635756 
2015-10-08 99.99617648 100.2322157 
2015-10-07 100   100 

思想是使这两个(或更多个)的列线图中可比较的。

有什么建议吗?这甚至可能在SQL?我正在使用MSSQL 2014.

谢谢!

+0

您从结果中选择顶1。然后在该top1和calc r.value * 100/t.value上交叉连接结果(r结果,t top 1) –

回答

3

下面是一个例子:

;with r as(your current query), 
     t as(select top 1 * from r order by eod) 
select r.eod, 
     r.omxh25 * 100/t.omxh25 as omxh25, 
     r.ux * 100/t.ux as ux 
from r 
cross join t