sql oracle select 不同金额字段

sql oracle select different amount field

我有一个 table 这样的:

| criteria | jan | feb | mar | apr | may | jun | jul |
|A         |100  |100  |100  |100  |100  |100  |100  |
|B         |200  |200  |200  |200  |200  |200  |200  |

我想要 select 基于月份的字段。 如果月份是一月,那么我希望我的 table 看起来像这样

| criteria | jan |
|A         |100  |
|B         |200  |

如果月份是三月,那么我希望我的 table 看起来像这样

| criteria | jan | feb | mar |
|A         |100  |100  |100  |
|B         |200  |200  |200  |

请帮助我,谢谢...

因此,如果您不介意返回的结果为 xml。

这是一些示例数据

CREATE TABLE table1
AS
   SELECT 'A' criteria,
          100 jan,
          100 feb,
          100 mar,
          100 apr
     FROM DUAL
   UNION ALL
   SELECT 'B',
          200,
          200,
          200,
          200
     FROM DUAL;

我只去了四月,但你明白了。
这是一月份的结果。

WITH sql_statements
     AS (SELECT 'select criteria, jan from table1' jan,
                'select criteria, jan, feb from table1' feb,
                'select criteria, jan, feb, mar from table1' mar,
                'select criteria, jan, feb, mar, apr from table1' apr
           FROM DUAL)
SELECT DBMS_XMLGEN.getxmltype (jan)
  FROM sql_statements;

结果

  <ROWSET>
 <ROW>
  <CRITERIA>A</CRITERIA>
  <JAN>100</JAN>
 </ROW>
 <ROW>
  <CRITERIA>B</CRITERIA>
  <JAN>200</JAN>
 </ROW>
</ROWSET>

现在将您的查询更改为四月。

WITH sql_statements
     AS (SELECT 'select criteria, jan from table1' jan,
                'select criteria, jan, feb from table1' feb,
                'select criteria, jan, feb, mar from table1' mar,
                'select criteria, jan, feb, mar, apr from table1' apr
           FROM DUAL)
SELECT DBMS_XMLGEN.getxmltype (apr)
  FROM sql_statements;

结果

<ROWSET>
 <ROW>
  <CRITERIA>A</CRITERIA>
  <JAN>100</JAN>
  <FEB>100</FEB>
  <MAR>100</MAR>
  <APR>100</APR>
 </ROW>
 <ROW>
  <CRITERIA>B</CRITERIA>
  <JAN>200</JAN>
  <FEB>200</FEB>
  <MAR>200</MAR>
  <APR>200</APR>
 </ROW>
</ROWSET>