Обновление с заявлением «С» и «Применить» - PullRequest
0 голосов
/ 23 января 2019

У меня есть этот кусок кода, он устанавливает цену для данного заказа и сезон на 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_no из моего @season_table, которая соответствует каждому заказу. Могу ли я сделать это?

Что мне нужно сделать, так это заменить отдельную локальную переменную @season_no на оператор выбора из @season_table, и я не уверен, как это сделать.

Я не могу настроить функцию, не для этого проекта

1 Ответ

0 голосов
/ 23 января 2019

Вы не предоставили достаточно информации, чтобы быть конкретным, но в целом я могу вам сказать, что вы можете использовать коррелированный подзапрос и заменить это:

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
...