代码之家  ›  专栏  ›  技术社区  ›  Elizabeth

使用WITH和CROSS APPLY语句更新

  •  0
  • Elizabeth  · 技术社区  · 6 年前

    我有这段代码,它根据给定的订单和季节 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 对应于每个订单。我可以那样做吗?

    我需要做的是替换 @季节季节 独立的单个局部变量,带有来自 @季节表 我不知道该怎么做。

    我不能调整功能,不适合这个项目

    1 回复  |  直到 6 年前
        1
  •  0
  •   Tab Alleman    6 年前

    您没有提供足够的具体信息,但我一般可以告诉您,您可以使用相关的子查询并替换它:

    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