有兴趣的人的快速背景,
我有一个主详细信息表(选项日期),每个主记录大约有20个详细信息.我们保存数据的oltp系统为我们保存的每条新信息做了21次插入.这是杀死服务器,所以我试图通过用逗号分隔值代替详细信息表来实现这一点.一切似乎都在起作用,除了我可以弄清楚如何获取细节表.我正在尝试使用表值函数,但它并不是很有效.
我想打个电话
Select Top 100 *
FROM dbo.fn_MarketDataDetails (MarketDataMasterID) mdd
INNER JOIN MarketDataMaster mdm on mdm.MarketDataMasterID = mdd.MarketDataMasterID
Run Code Online (Sandbox Code Playgroud)
显然,这只是不编译.
我可以跑
Select Top 100 *
FROM dbo.fn_MarketDataDetails (15425) // Assuming 15425 is a valid MarketDataMasterID
Run Code Online (Sandbox Code Playgroud)
然后我找回了一张看起来像旧细节表的桌子.
这甚至可能吗?我有意义吗?
Phi*_*ley 33
APPLY运算符应该这样做:
SELECT *
from MarketDataMaster
cross apply dbo.fn_MarketDataDetails (MarketDataMasterID)
Run Code Online (Sandbox Code Playgroud)
这实质上是从MarketDataMaster返回的每行调用一次函数."cross apply"的工作方式类似于内部联接,因为只返回函数返回数据的行; 使用"外部应用"来实现类似于左外连接的功能.