【问题标题】:SQL Change Column header to value from another columnSQL将列标题更改为另一列的值
【发布时间】:2017-03-01 17:03:19
【问题描述】:

我正在尝试提取多只股票的价格数据。一切都在列中,包括当我尝试提取多只股票的数据时的代码我无法弄清楚如何在每只股票的列标题中使用代码。下面的代码适用于一只股票,但没有返回两只股票。

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

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

如何使这项工作适用于多只股票?谢谢!

【问题讨论】:

  • 听起来你想要一个动态的支点

标签: sql sql-server header stocks


【解决方案1】:

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

【讨论】:

  • 完美运行。谢谢你,戈登!
猜你喜欢
  • 2021-04-25
  • 1970-01-01
  • 2014-04-25
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
  • 2023-04-04
相关资源
最近更新 更多