Sql 窗口功能的使用?

Sql 窗口功能的使用?,sql,snowflake-cloud-data-platform,Sql,Snowflake Cloud Data Platform,我需要从不同的字段和行计算总时间,但我需要从计算中排除一些时间。一个例子更容易理解。 我想为每一行计算order1\u time\u 1+付款\u time\u 1+付款\u time\u 2+结帐\u time\u 2(如果order2的time\u 1=0或time\u 2=0)。有时有多个订单事件,但只有一个在时间_1和时间_2中具有值。 我希望这是有道理的。如有任何建议,我们将不胜感激。我认为这可以用窗口函数解决,但我就是做不好 我的数据(显示计算的总时间,但只需要结果): 您需要具有条

我需要从不同的字段和行计算总时间,但我需要从计算中排除一些时间。一个例子更容易理解。 我想为每一行计算order1\u time\u 1+付款\u time\u 1+付款\u time\u 2+结帐\u time\u 2(如果order2的time\u 1=0或time\u 2=0)。有时有多个订单事件,但只有一个在时间_1和时间_2中具有值。 我希望这是有道理的。如有任何建议,我们将不胜感激。我认为这可以用窗口函数解决,但我就是做不好

我的数据(显示计算的总时间,但只需要结果):

您需要具有条件逻辑的
sum()

select t.*,
       sum(case when event_name in ('Order1', 'Payment') then time_1
                when event_name in ('Order2', 'CheckOut') then time_2
           end) over (partition by id) as total_time
from t;

谢谢在我发布我的问题后,我用一个案例和一个窗口功能解决了这个问题:)谢谢!
select t.*,
       sum(case when event_name in ('Order1', 'Payment') then time_1
                when event_name in ('Order2', 'CheckOut') then time_2
           end) over (partition by id) as total_time
from t;