2017-04-02 74 views
1

称它为我不能让这种类型的选择查询(伪代码)的工作。对于给定的'UID_VEHICLE',UDF返回一个包含单列8列的表。要返回多达100行 - 当“UID_VEHICLE”提供像3308恒定的,但我需要这些功能,结果为每辆车给定客户的一个排它完美的作品。SQL Server用户定义的函数返回表 - 无法从选择查询

SELECT 
    * 
FROM 
    [dbo].[fnGetNextDOT_InspectionData](UID_VEHICLE) 
WHERE 
    UID_VEHICLE IN (SELECT UID_VEHICLE 
        FROM tVEHICLES 
        WHERE UID_CUSTOMER = 88); 

您的意见和解决方案,欢迎...谢谢...约翰

回答

1

当从查询路过的行值成TVF,你需要使用CROSS APPLYOUTER APPLY(与SQL Server 2005开始) :

SELECT * -- or dot.*, or whatever is desired 
FROM  tVEHICLES veh 
CROSS APPLY [dbo].[fnGetNextDOT_InspectionData](veh.UID_VEHICLE) dot 
WHERE veh.UID_CUSTOMER = 88; 
+0

优秀!这是答案,但是稍作改动。选择点。* ...非常感谢 - 你非常聪明! –

+0

@JohnD Yer欢迎,我更新了我的答案。因为我不知道你需要什么列,所以我没有在第一次包括它,并认为你会根据需要更改'SELECT'。 –

+0

@srutzky ......亲爱的先生......虽然我这标志着作为答案,我感谢你的回答,我觉得在结果集的进一步检查,我的CROSS设置为外部和发现,不是所有的车辆客户= 88正在退货。有任何想法吗? –

相关问题