简体   繁体   中英

Teradata SQL -Min Max transaction dates from Rows

Tried Qualify row_Number () and Qualify Min & Max functions but still not able to get range of dates for transaction. See data structure below

在此处输入图片说明

Need help for the following output

在此处输入图片说明

Thank you in advance

You need to find the groups of consecutive dates first. There are several ways to do this, in your case the best should is based on comparing a sequence to another sequence with gaps in it:

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

The columns used for PARTITION BY/GROUP BY depend on your rules.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM