Что является альтернативой для предложения RESET WHEN в Teradata в стандартном SQL? - PullRequest
0 голосов
/ 13 июля 2020

Мы используем СБРОС КОГДА в Teradata. Мы хотим переписать его в стандартном SQL, чтобы мы могли также перенести код на Azure Synapse. У кого-нибудь есть идеи.

CASE WHEN    MS_NO_X = '' AND EMPTY_STATUS_F = 'Y' THEN NULL
        ELSE    MIN(MV_TS) OVER( 
                                    PARTITION BY CN_NO_X 
                                    ORDER BY MV_TS 
                                    RESET WHEN PREV_SEQ_FLAG IN ( 'END' , 'STEND' )  ----- need to rewrite 
                                            OR EMPTY_STATUS_F = 'Y' 
                                 )  
   END  AS  Group_Seq

1 Ответ

0 голосов
/ 13 июля 2020

Думаю, вы можете сделать это с помощью подзапроса:

select . . . ,
       MIN(MV_TS) OVER (PARTITION BY CN_NO_X, grp ORDER BY MV_TS)  
from (select t.*,
             sum(case when PREV_SEQ_FLAG IN ( 'END' , 'STEND' ) OR EMPTY_STATUS_F = 'Y'
                      then 1 else 0
                 end) over (partition by CN_NO_X order by MV_TS) as grp
      from t
     ) t
...