SQL将列标题从另一列更改为值

SQL将列标题从另一列更改为值,sql,sql-server,header,stocks,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

我正试图获取多只股票的价格数据。所有内容都在列中,包括股票代码,当我尝试提取多个股票的数据时,我无法确定如何将股票代码放在每个股票的列标题中。下面的代码对一只股票有效,但对两只股票不返回任何结果

这是我买一只股票得到的:

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

我如何使它适用于多种股票?谢谢大家!

您可以使用条件聚合或
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;

您可以使用条件聚合或透视:

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;

听起来你想要一个动态数据透视图听起来你想要一个动态数据透视图工作完美。谢谢你,戈登!工作得很好。谢谢你,戈登!