2009-03-30 2 views
22

पर तालिका मान फ़ंक्शन में शामिल होना मेरे पास एक टेबल-वैल्यू फ़ंक्शन है जो किसी व्यक्ति की आईडी संख्या लेता है और कुछ पंक्तियां और कॉलम देता है। एक और पूछताछ में, मैं एक चयन बना रहा हूं जो कई लोगों के बारे में बहुत सारी जानकारी प्राप्त करता है। मैं कॉलम को समेटने के लिए अपने मुख्य प्रश्न से एक आईडी नंबर कैसे पास कर सकता हूं और इसे अपनी मुख्य क्वेरी में शामिल कर सकता हूं? काश मैं टेबल टेबल फ़ंक्शन नहीं था क्योंकि यह आसानी से काम करेगा, हालांकि, इस फ़ंक्शन का उपयोग कहीं और किया जाता है और मैं इसका पुन: उपयोग करना चाहता हूं। शायद यह टेबल-वैल्यू फ़ंक्शन के साथ भी संभव नहीं है और मुझे स्केलर बनाने की आवश्यकता है।एक एमएसएसएलएल क्वेरी

मेरा मुख्य क्वेरी इस तरह दिखता है:

select id_num, name, balance 
from listOfPeople 

और टेबल मूल्य समारोह इस तरह दिखता है:

select id_num, name, balance 
from listOfPeople 
left join 
(
    SELECT id_num, SUM(discount) 
    FROM calculatePersonalDiscount(listOfPeople.id_num) 
) x ON x.id_num = listOfPeople.id_num 

:

calculatePersonalDiscount(id_number) 

मैं की तरह कुछ करना चाहते हैं लेकिन आप फ़ंक्शन में सूची OfPeople.id_num को पास नहीं कर सकते हैं क्योंकि यह वास्तव में एक ही दायरा नहीं है। एक वाम बाहरी शामिल होने के बराबर का वाक्य विन्यास

select id_num, name, balance, SUM(x.discount) 
from listOfPeople 
    cross apply dbo.calculatePersonalDiscount(listOfPeople.id_num) x 

इसी तरह वहाँ एक बाहरी लागू है:

उत्तर

41

SQL सर्वर 2005 में आप CROSS APPLY syntax उपयोग कर सकते हैं।

+0

यह अभी भी SQL Server 2008 और 2012 पर काम करता है, और मैं इसे "दूर जाने" की कल्पना नहीं कर सकता। एक विशिष्ट प्रश्न के लिए एक संक्षिप्त संक्षिप्त उत्तर के लिए +1 जो मेरे पास Google था क्योंकि मैं वाक्यविन्यास भूल गया था! – NateJ

+0

यह काम कर रहा है। धन्यवाद –

संबंधित मुद्दे