我有起始日期和截止日期作为参数。我得到如下查询的行结果。
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 );
我想将这些行更改为oracle中的列。我想在 Oracle 中进行数据透视。我是 Oracle 数据库新手。 我想要的输出
谢谢你
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 等)中进行转换。