【问题标题】:Pivoting table in SQl ServerSQL Server 中的数据透视表
【发布时间】:2020-07-15 06:44:44
【问题描述】:

我们有 CurrencyRtestable 如下:

我们需要将这张表水平排列为:

TransactionCurrency|EUR rate|INR Rate|USD Rate|Effectie Date
GBP                |0.893   |0.0115  |0.7992  |2019-06-18 00:00:00:000
INR                |78.0005 |1       |69.7242 |2019-06-18 00:00:00:000
USD                |1.1187  |0.0143  |1       |2019-06-18 00:00:00:000
EUR                |1       |0.0128  |0.8939  |2019-06-18 00:00:00:000
GBP                |0.8902  |0.0114  |0.7943  |2019-06-19 00:00:00:000
INR                |78.0755 |1       |69.6667 |2019-06-19 00:00:00:000
USD                |1.1207  |0.0144  |1       |2019-06-19 00:00:00:000
EUR                |1       |0.0128  |0.8923  |2019-06-19 00:00:00:000

等等

我有基本的 SQL 知识。 PIVOT 功能可以做到这一点吗?查询的起点应该是什么?因为我的试验出错了。

select * from (SELECT  
      [BaseCurrency] ,
      [TransactionCurrency], 
      [EffectiveDate],
      [Rate]
  FROM [PDI].[dbo].[Dim_CurrencyRates]
  )cur
  PIVOT(
 
  FOR [BaseCurrency] in ('EUR','INR','USD')
  )As PivTab

【问题讨论】:

  • 我投票结束这个问题,因为它表明没有努力研究 PIVOT 运算符,甚至没有尝试使用它。
  • 我尝试使用 PIVOT,但没有可应用的聚合函数,因此无法继续进行。

标签: sql-server pivot currency-exchange-rates


【解决方案1】:

当我不需要聚合时,我经常使用max

select 
    TransactionCurrency,
    EUR as [EUR rate],
    INR as [INR Rate],
    USD as [USD Rate],
    EffectiveDate
from [PDI].[dbo].[Dim_CurrencyRates]
pivot(
    max(Rate) 
    for BaseCurrency in (EUR, INR, USD)) as pv

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多