使用 With 和 Cross Apply 语句更新

Update with a With and Cross Apply Statement

我有这段代码,它可以根据 perf_type/zone_no 提取给定订单和季节的定价。

在我的原始代码中,我将 @season_no 作为局部单个变量。这神奇地起作用了。

UPDATE p
SET price = x.Price
FROM #Prices p
with 
CROSS APPLY  
(
    SELECT * 
    FROM dbo.LFT_GET_PRICES_Seasonal(@season_no, order_dt) udf
    WHERE udf.perf_type = p.perf_type AND udf.zone_no = p.zone_no
) x

现在我们正在尝试修改代码以适用于多个季节。我们的代码前面有这段代码。

select season_no from @season_table

我不确定如何合并两者。

with season_alias as (select season_no from @season_table) 

但我不知道如何合并两者。如何将对应于每个订单的 @season_table 中的唯一 season_no 传递给我的交叉应用函数。我可以这样做吗?

我需要做的是用 @season_table 中的 select 语句替换 @season_no 独立的单个局部变量,我不知道该怎么做。

我无法调整功能,不适用于此项目

你没有提供足够的信息来具体说明,但我可以大致告诉你,你可以使用相关的子查询并替换它:

FROM dbo.LFT_GET_PRICES_Seasonal(@season_no, order_dt) udf

像这样:

FROM dbo.LFT_GET_PRICES_Seasonal((SELECT TOP 1 season_no FROM @season_table WHERE something=somethingelse), order_dt) udf