将具有动态日期的行转换为列

时间:2015-12-20 15:24:11

标签: sql oracle pivot pivot-table unpivot

需要转换此内容:

DATE            VALUE
18-DEC-15   2877544
17-DEC-15   2974276
16-DEC-15   4862020

18-DEC-15   17-DEC-15   16-DEC-15
2877544     2974276     4862020

日期每天更新,我只需要选择最新的3个日期,然后将它们转换为具有以下相应值的列。 我尝试使用Pivots,但我能够动态创建列标题。

2 个答案:

答案 0 :(得分:0)

使用Conditional Aggregate来转动数据

select MAX(case when "DATE" = '18-DEC-15' then VALUE END) as '18-DEC-15',
       MAX(case when "DATE" = '17-DEC-15' then VALUE END) as '17-DEC-15',
       MAX(case when "DATE" = '16-DEC-15' then VALUE END) as '16-DEC-15'
from yourtable

注意:由于日期未知,您需要使用EXECUTE IMMEDIATE

答案 1 :(得分:0)

试试这个

WITH pivot_data AS (
            select date, value from table)
    SELECT *
    FROM   pivot_data
    PIVOT (
              max(value)        --<-- pivot_clause
          FOR table --<-- pivot_for_clause


);