SQL将列标题更改为另一列

时间:2017-03-01 17:03:20

标签: sql sql-server header stocks

我试图提取多个股票的价格数据。一切都在列中,包括当我尝试为多个股票提取数据时的代码,我无法弄清楚如何在每个股票的列标题中设置股票代码。以下代码适用于一个股票,但不返回两个。

这是我获得的一个股票:

RecDate     TKR PRI

9/18/2002   CVS 13.86

但我希望能够得到这个:

RecDate     CVS    ORCL

9/18/2002   13.86   60

一直用它来拉价:

SELECT RecDate, TKR, PRI FROM dbo.Stockdatabase 
WHERE RecDate >= DateAdd(YEAR, -5, GetDate()) AND TKR='CSCO' 
ORDER BY TKR

如何为多种股票开展此项工作?谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用条件聚合或pivot

SELECT RecDate,
       MAX(CASE WHEN TKR = 'CSCO' THEN PRI END) as pri_csco,
       MAX(CASE WHEN TKR = 'ABC' THEN PRI END) as pri_abc
FROM dbo.Stockdatabase s
WHERE RecDate >= DateAdd(YEAR, -5, GetDate()) AND
      TKR IN ('CSCO' , 'ABC')
GROPU BY RecDate
ORDER BY RecDate;