Teradata SQL-行中的最小-最大事务日期

Teradata SQL-行中的最小-最大事务日期,sql,teradata,window-functions,gaps-and-islands,Sql,Teradata,Window Functions,Gaps And Islands,已尝试限定行号()和限定最小和最大函数,但仍无法获取事务的日期范围。请参见下面的数据结构 需要以下输出的帮助吗 提前感谢您需要先找到连续日期组。有几种方法可以做到这一点,在您的情况下,最好的方法是将一个序列与另一个有间隙的序列进行比较: with cte as ( select t.* -- consecutive numbers = sequence without gaps ,row_number() over (partition by loc

已尝试限定行号()和限定最小和最大函数,但仍无法获取事务的日期范围。请参见下面的数据结构

需要以下输出的帮助吗


提前感谢

您需要先找到连续日期组。有几种方法可以做到这一点,在您的情况下,最好的方法是将一个序列与另一个有间隙的序列进行比较:

with cte as
 (
   select t.*
      -- consecutive numbers = sequence without gaps
     ,row_number()
      over (partition by location, cust#, cust_type -- ??
            order by transaction_date) as rn
      -- consecutive numbers as long as there's no missing date = sequence with gaps
     ,(transaction_date - date '0001-01-01') as rn2

      -- assign a common (but meaningless) value to consecutive dates,
      -- value changes when there's a gap
     ,rn2 - rn as grp
   from tab as t
 )
select location, cust#, cust_type -- ??
  ,min(transaction_date), max(transaction_date)
  ,min(amount), max(amount)
from cte
 -- add the calculated "grp" to GROUP BY 
group by location, cust#, cust_type, grp

用于分区依据/分组依据的列取决于您的规则。

合并行的规则是什么?每个月的连续日期完成并解释得令人惊讶。谢谢你,先生!!!它给了我精确的输出。