我是SQL的新手,我想知道teradata中的函数(前面的1和前面的1之间的行)究竟是做什么的,我想要一个简单的说明,我想用这个函数作为测试用例来获取历史表中起始日期和结束日期之间的时间差距,任何人都可以帮助请求或提供任何有用的链接。
SELECT DISTINCT CUST_ID
FROM
(
SELECT
CUST_ID,
STRT_dt -
MIN(END_dt) OVER (PARTITION BY CUST_ID ORDER BY END_dt
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS diff
FROM table
QUALIFY diff > 1
) dt
答案 0 :(得分:4)
返回与标准SQL LAG(END_dt) OVER (PARTITION BY CUST_ID ORDER BY END_dt
相同的结果,即前一行END_dt
(或每个CUST_ID第一行为NULL)。
当您切换到FOLLOWING
而不是PRECEDING
时,它是标准SQL中的下一行LEAD
。
LAG
和LEAD
最终都在TD16.10中实现。
由于您只是想找到差距并且您无法获取实际差异,因此您还可以将其简化为:
SELECT DISTINCT CUST_ID
FROM table
QUALIFY
STRT_dt -
MIN(END_dt)
OVER (PARTITION BY CUST_ID
ORDER BY END_dt
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) > 1