Tsql 通过更新同一列实现滞后函数

Tsql 通过更新同一列实现滞后函数,tsql,pyspark,pyspark-sql,lag,lead,Tsql,Pyspark,Pyspark Sql,Lag,Lead,我必须将条形码的滞后值(offset=1)更新为条形码 案例 当(滞后(条形码,1)超过(按条形码排序) 和Datediff(SS、eventdate、lag(next_eventdate,1)超过(按条形码排序))

我必须将条形码的滞后值(
offset=1
)更新为条形码

案例
当(滞后(条形码,1)超过(按条形码排序)
和Datediff(SS、eventdate、lag(next_eventdate,1)超过(按条形码排序))<3*3600)
那么1
其他0
以旗帜结束
我已经在pyspark上实现了它,但是给了我一个错误

from pyspark.sql.functions import col, unix_timestamp
timeDiff = unix_timestamp('eventdate', format="ss")- unix_timestamp(F.lag('next_eventdate', 1), format="ss")
ww= Window.orderBy("barcode") 
Tgt_df_tos = Tgt_df_7.withColumn('FLAG',F.when((F.lag('barcode', 1)) & ( timeDiff <= 10800),"1").otherwise('0'))   
从pyspark.sql.functions导入col、unix\u时间戳
timeDiff=unix\u时间戳('eventdate',format=“ss”)-unix\u时间戳(F.lag('next\u eventdate',1),format=“ss”)
ww=窗口.订购人(“条形码”)

Tgt_df_tos=Tgt_df_7.with column('FLAG',F.when('F.lag('barcode',1))&(timeDiff我对pyspark不太熟悉,但在我看来问题出在CASE语句中

CASE WHEN (
        LAG(barcode,1) OVER (ORDER BY barcode ) 
    AND
        DATEDIFF(SS, eventdate, LAG(next_eventdate, 1) OVER(ORDER BY barcode)) < 3*3600
)

如果您遇到错误,请同时发布
CASE WHEN (
        LAG(barcode,1) OVER (ORDER BY barcode ) 
    AND
        DATEDIFF(SS, eventdate, LAG(next_eventdate, 1) OVER(ORDER BY barcode)) < 3*3600
)
CASE WHEN (324857 AND True) THEN 1 ELSE 0 END as FLAG

AnalysisException: "cannot resolve .... (int and boolean).