【问题标题】:Split data in one column and convert them into column headers in ORACLE将数据拆分为一列并将其转换为 ORACLE 中的列标题
【发布时间】:2017-08-28 06:35:40
【问题描述】:

我有一张这样的桌子。我需要做的就是将指定列中的数据拆分为新的列标题,并将匹配值分配给另一列中的那些列。

App_No       Code     Amount

  a           rvd      100
  a           pqd      200
  b           srv      100
  b           rvd      500
  b           crb      300
  c           srv      200

and I need to select this data and convert them to a format like this.

    App_No      rvd     pqd     srv     crb

      a         100     200      0       0
      b         500      0      100     300  
      c          0       0      200      0

我需要用代码数据制作列标题。我怎样才能在 oracle 中实现这一点?我可以用'pivot'来做到这一点吗?

【问题讨论】:

  • Code 列的可能值集合是否提前知道?
  • 是的。只有 16 个值,这些都是已知值。

标签: oracle11g


【解决方案1】:

试试这个:

select  
app_no,
nvl(rvd,0)rvd,
nvl(rqd,0)rqd,
nvl(srv,0)srv,
nvl(crb,0)crb
from
main_table 
PIVOT
(
sum(amount) for (code) in (
'rvd' as rvd,
'rqd' as rqd,
'srv' as srv,
'crb' as crb
) 
)

【讨论】:

  • Thaks Ersin。它工作正常。但有一个问题。有空单元格。如何将 0 放入空单元格。
  • 谁能告诉我如何将 0 放入此结果集中的空单元格?
  • 什么是空单元格?您可以将 nvl func 用于空值
  • 每个 App_no 都没有 rvd,rqd...所有值。有些人只有2或3个。所以空意味着空值。但是这里空值的结果集什么也没显示。只是一个空值的空单元格。
  • 你可以使用 nvl 吗?
猜你喜欢
  • 2021-10-29
  • 1970-01-01
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 1970-01-01
  • 2022-07-30
相关资源
最近更新 更多