在 oracle 中需要行数据列明智

Posted

技术标签:

【中文标题】在 oracle 中需要行数据列明智【英文标题】:Need row data column wise in oracle 【发布时间】:2021-06-27 16:05:27 【问题描述】:

我需要比较 owners 列中 3 个来源(27、2、55)的价格。我不确定我应该使用选择子查询还是左连接?

想要的结果

【问题讨论】:

请查看这篇文章:Why not upload images of code/errors when asking a question? How to create a Minimal, Reproducible Example 和 How much research effort is expected of Stack Overflow users?。 这能回答你的问题吗? Oracle SQL pivot query 【参考方案1】:

看起来像一个支点。

#1 - 10 行中的示例数据;您可能需要的查询从第 12 行开始。

SQL> with test (id_value, as_of, timezone, price, owner) as
  2    -- sample data
  3    (select 'EEM.A', date '2021-06-25', 'J1530', 55.04, 55 from dual union all
  4     select 'EEM.A', date '2021-06-25', 'J1530', 55.04, 27 from dual union all
  5     select 'EEM.A', date '2021-06-25', 'J1530', 55.04,  2 from dual union all
  6     --
  7     select 'AMX.N', date '2021-06-25', 'J1530', 15.4, 55 from dual union all
  8     select 'AMX.N', date '2021-06-25', 'J1530', 15.4, 27 from dual union all
  9     select 'AMX.N', date '2021-06-25', 'J1530', 15.4,  2 from dual
 10    )
 11  -- query begins here
 12  select *
 13  from test
 14  pivot (max(price)
 15         for owner in (55, 27, 2)
 16        );

ID_VA AS_OF      TIMEZ         55         27          2
----- ---------- ----- ---------- ---------- ----------
AMX.N 06/25/2021 J1530       15,4       15,4       15,4
EEM.A 06/25/2021 J1530      55,04      55,04      55,04

SQL>

【讨论】:

我刚刚在 Golden 6 软件上试过这个,我需要从第一行开始 - 测试吗? 从来没有听说过“golden 6 software”,但是 - 不,你会从第 12 行开始(正如我所写的,但你要么没有阅读,要么不明白我是什么说)。 select * from quotes_mxsequities pivot (max(price) for owner in (55, 27, 2) ) where timezone = 'J1530' and asof = '25Jun2021'; 我刚刚尝试过,但没有得到想要的结果 如您所见,我是-您发布的示例数据。我可以告诉 - 根据您发布的评论 - ASOF 看起来奇怪。如果它应该是 DATE 值,请尝试使用 and asof = date '2021-06-25'

以上是关于在 oracle 中需要行数据列明智的主要内容,如果未能解决你的问题,请参考以下文章

Cublas - 列/行明智的操作

oracle行转列sql怎么写?

需要将行转换为oracle中相似ID的列

在 oracle 中获取每月明智的年度报告

如何将Oracle中同一列的多行记录拼接成一个字符串

oracle 使用pivot 函数进行批量数据的动态行转列