我正在使用teradata。 我有一个包含两个日期列和产品代码的表。 像这样
Prod ID StartDate EndDate
123 1-1-2013 1-5-2013
123 1-3-2013 1-10-2013
123 1-4-2013 1-10-2013
321 1-4-2013 1-10-2013
321 1-6-2013 1-12-2013
321 1-5-2013 1-12-2013
我需要编写一个查询,它会为我提供同一产品的下一个“结束日期”的最短开始日期。所以在上面的例子中,第一个产品将返回'1-3-2013',而对于第二个产品我会收到'1-5-2013'因为下一个结束日期'1-12-2013是重复的,并且我只需要获得它的“开始日期”的最小实例。
我感觉它像是
min(startDate) over (partition by prodID order by endDate rows between 1 following and 1 following)
但是,我觉得我需要一个限定语句,这将确保下一行的startDate大于当前行的endDate。
答案 0 :(得分:2)
以下行的最小end_date应为
min(startDate)
over (partition by prodID
order by endDate
rows between 1 following and unbounded following)
也许您需要将startDate添加到ORDER BY。
下一行的startDate大于当前行的endDate:
qualify
min(startDate)
over (partition by prodID
order by endDate
rows between 1 following and 1 following) > endDate