遍历sql中的记录

时间:2018-05-25 06:18:43

标签: sql teradata

我想获得重叠日期记录的输出

> Data: Id Open_date Closed_Date
>       1  2016-01-01 2017-01-01
**>       1  2016-12-31 2018-21-01
>       1  2016-01-01 2018-01-01**
>       2  2017-01-01 2018-02-02
Here, you see the second & 3rd records are starting with date than the closed_Date of their previous records. Here i need to identify those type of records

2 个答案:

答案 0 :(得分:0)

由于您的问题不太清楚,我假设您正在寻找开放日期和最近结束日期的最小值。
如果这不是要求,请编辑问题以提供更多详细信息。

select id, min(Open_date), max(Closed_Date)
from table
group by id

答案 1 :(得分:0)

您希望规范化慢慢变化的维度类型2 。当然,处理它们的最佳方法是使用Teradata或ANSI语法使用 Temporal 表。

Teradata中有一个很好的语法,可以根据Period数据类型获得预期结果,但是它可以将您的开始/结束日期转换为句点:

SELECT id,
   -- split the period back into seperate dates
   Begin(pd) AS Open_date,
   End(pd) AS Closed_Date
FROM
 (
   SELECT NORMALIZE -- magic keyword :-)
      id, PERIOD(Open_date, Closed_Date) AS pd
   FROM tab
 ) AS dt