在 Oracle19 中将行中的日期转换为列

问题描述 投票:0回答:1

我有起始日期和截止日期作为参数。我得到如下查询的行结果。

SELECT
  (to_date('29-04-2024','DD-MM-YYYY') - level + 1) AS day
FROM
  dual
CONNECT BY LEVEL <= (to_date('01-05-2024','DD-MM-YYYY') - to_date('01-04-2024','DD-MM-YYYY')+1 );

enter image description here

我想将这些行更改为oracle中的列。我想在 Oracle 中进行数据透视。我是 Oracle 数据库新手。 我想要的输出 enter image description here

谢谢你

oracle plsqldeveloper oracle19c
1个回答
0
投票

Oracle 不支持 SQL 中的动态枢轴(您需要使用 PL/SQL 构建动态 SQL 语句或使用 XML 或类似的东西)。如果您想在 SQL 中获得基于列的输出,请对列进行硬编码:

SELECT DATE '2024-04-29' AS DT_20240429,
       DATE '2024-04-28' AS DT_20240428,
       DATE '2024-04-27' AS DT_20240427,
       -- Etc.
       DATE '2024-04-03' AS DT_20240403,
       DATE '2024-04-02' AS DT_20240402,
       DATE '2024-04-01' AS DT_20240401
FROM   DUAL

但是,您可能想要的是将日期生成为行(而不是列),然后在用于与数据库通信的任何第三方应用程序(Java、C#、PHP、Python 等)中进行转换。

© www.soinside.com 2019 - 2024. All rights reserved.