使用 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
我有这段代码,它可以根据 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