Быстрый фон для заинтересованных,
У меня есть основная таблица детали (дата опций), приблизительно 20 деталей для каждой основной записи. Наша oltp система, которая сохраняет данные, делала 21, вставляет для каждой новой информации, которую мы сохранили. Это уничтожало сервер, таким образом, я пытаюсь добраться, эта работа путем замены запятой разделила значения для таблицы деталей. Все, кажется, работает, кроме я могу выяснить, как вернуть таблицу деталей. Я пытаюсь использовать табличные функции, и это является не совсем рабочим.
Я хотел бы назвать что-то как
Select Top 100 *
FROM dbo.fn_MarketDataDetails (MarketDataMasterID) mdd
INNER JOIN MarketDataMaster mdm on mdm.MarketDataMasterID = mdd.MarketDataMasterID
Очевидно, это просто не компилирует.
Я могу работать
Select Top 100 *
FROM dbo.fn_MarketDataDetails (15425) // Assuming 15425 is a valid MarketDataMasterID
И я возвращаю таблицу, которая похожа на мою старую таблицу деталей.
Это даже возможно? Я имею какой-либо смысл?
Оператор APPLY должен помочь:
SELECT *
from MarketDataMaster
cross apply dbo.fn_MarketDataDetails (MarketDataMasterID)
По сути, он вызывает функцию один раз для каждой строки, возвращаемой из MarketDataMaster. «cross apply» работает как внутреннее соединение, в котором будут возвращены только строки, данные для которых возвращаются функцией; используйте «внешнее применение» для функциональности, аналогичной левым внешним соединениям.