【问题标题】:start date and end date开始日期和结束日期
【发布时间】:2012-08-19 14:13:33
【问题描述】:

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

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

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

【问题讨论】:

  • 1/1/2009 和 12/31/2999 应该是第一个和最后一个数据。

标签: sql database date


【解决方案1】:

一个可能的选项:获取一组感兴趣的记录,对每一行进行编号,然后将每一行与下一行进行自我连接。为您的结束添加额外记录:

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

【讨论】:

  • 我使用了您提供的部分代码,它给了我一个想法。谢谢!现在可以完美运行了。
猜你喜欢
  • 2022-01-23
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
相关资源
最近更新 更多