2017-04-02 73 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正在退貨。有任何想法嗎? –

相關問題