转换历史表以使用范围日期(从和到日期)而不是快照日期
问题描述:
我希望在一个简单的SQL select语句内完成,而不包含任何对该环境唯一的函数(派生查询,公用表表达式,temp表INSERT,UPDATE语句可以)。在帖子末尾查看我的标签以了解原因。转换历史表以使用范围日期(从和到日期)而不是快照日期
引用任何有问题的问题。我无法找到与我的结果一样清晰的标题。的使用情况下
例 原稿台:history_table_snapshot
Value|Date
50 |01
50 |02
24 |03
50 |04
转换表:history_table_range
Value|DateStart|DateEnd
50 |01 |03
24 |03 |04
50 |04 |infinity
另外,使此查询处理中的(即50列中的其它复杂/高比例的用例历史表可能会出现一些列,除了主键为空)
答
lag
window function应该做的伎俩:
CREATE TABLE history_table_range
(Value, DateStart, DateEnd)
AS
SELECT Value, Date, LAG (DATE) OVER (ORDER BY date DESC)
编辑:
正如戈登·利诺夫在评论中指出的那样,只是用lead
会更清洁:
CREATE TABLE history_table_range
(Value, DateStart, DateEnd)
AS
SELECT Value, Date, LEAD (DATE) OVER (ORDER BY date)
是否亚马逊红移有'铅()'和'滞后()'? –
@a_horse_with_no_name。 。 。是的,它确实。 –
编辑转换表的值。对困惑感到抱歉。 – softdevlife