开始日期和结束日期

时间:2012-08-24 01:36:30

标签: sql database date

我只有三行日期,但我需要有四行作为输出。我如何告诉sql获取结束日期的最后数据并将其放在开始日期的最后一行?

我尝试了滞后和领先,但似乎它在Teradata数据库中不起作用我不知道为什么。

任何建议都会有所帮助或替代。正如要求任何澄清或者您需要更多数据一样。

1 个答案:

答案 0 :(得分:0)

一种可能的选择:获取感兴趣的记录集,每行编号,然后使用以下行自行连接每一行。为结束添加额外的记录:

WITH numbered AS (
    SELECT effect_date, row_number() OVER (ORDER BY effect_date) AS rownum
      FROM price
      WHERE prod_id='4'
 )

 SELECT *
   FROM ( SELECT a.effect_date AS start_date
                ,b.effect_date AS end_date
            FROM numbered a
                ,numbered b
            WHERE b.rownum = a.rownum + 1

          UNION

          SELECT MAX(effect_date)
                ,TO_DATE('29991231', 'YYYYMMDD')
            FROM numbered
        ) x
   ORDER BY 1