我只有三行日期,但我需要有四行作为我的输出。我如何告诉 sql 获取结束日期的最后一个数据并将其放在开始日期的最后一行?
我尝试了滞后和领先,但它似乎在 Teradata 数据库中不起作用,我不知道为什么。
任何建议都会真正有所帮助或替代。就像要求任何澄清或您是否需要更多数据一样。
一种可能的选择:获取感兴趣的记录集,对每一行进行编号,然后将每一行与以下行进行自我连接。为您的结束添加额外记录:
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