sql server - please help me to create a sql query -
मेरे पास 3 तालिकाओं हैं
बनाएँ तालिका [dbo]। [Dspartner] ([ dspartnerid] [bigint] पहचान (1,1) नहीं NULL, [नाम] [varchar] (100) SQL_Latin1_General_CP1_CI_AS नहीं NULL मुक़ाबला, [प्राथमिकता] [int] शून्य) टेबल [dbo]। [होटल बनाएं] ([hotelid] [ पूर्णांक] प्राथमिक कुंजी पहचान (1,1) नहीं NULL, [नाम] [varchar] (100) मुक़ाबला SQL_Latin1_General_CP1_CI_AS नहीं NULL, [DSPartnerid] [bigint] शून्य,) टेबल [HotelSourceMap] ([hotelsourcemapid] [bigint] प्राथमिक कुंजी बनाने
स्थिति इस तरह की है:
P>मैं तालिका करना चाहता हूँ: dspartner डेटास्रोत साथी के बारे में विवरण होते हैं। तालिका: होटल होटल तालिका के विवरण शामिल: HotelSourceMap hotels.hotelid, dsparnter.dspartnerid
के रिकॉर्डनया मैं होटल तालिका को अपडेट करना चाहते हैं, जिससे कि सेट hotels.dspartner = hotelsourcemap.dspartnerid जहां hotels.hotelid = hotelsourcemap शामिल । होटल और होटलसोर्समैप.डिस्पैनरिएरड = डीस्पर्टनर.डिस्पेनरनरैड (जहां डीस्पर्टनेरियस की प्राथमिकता उच्च है)
नोट: -प्रायरीटी में इंट मान होता है और अधिकतम इंट मान को अधिकतम प्राथमिकता के रूप में माना जाता है यदि दो डिस्पॅटर की प्राथमिकता है तो उनमें से किसी एक को प्राप्त करें
sql सर्वर 2005
का उपयोग करें:
अद्यतन HOTELS SET dspartners = (से (चयन hsm.dspartnerid, ROW_NUMBER () से अधिक (विभाजन x.dspartnerid चयन hsm.hotelid आदेश द्वारा p.priority द्वारा, p.name DESC ) एओ रैंक से होटलसोरसैमआप एचएसएम जॉइन डीएसपीएटीएनआर पी पी.डिस्पाटरनरआईडी = एचएसएम.डिस्पानरनरैड WHERE एचएसएम हॉटलिड = होटलीड) एक्स कहां x.रैंक = 1)
यह सुनिश्चित करने के लिए कि चीजें ठीक से काम कर रही हैं , चलाएँ:
से (चयन hsm.dspartnerid, ROW_NUMBER () से अधिक (hsm.hotelid आदेश द्वारा PARTITION p.priority द्वारा, p.name DESC) का चयन करें x.dspartnerid HOTELSOURCEMAP HSM से रैंक के रूप मेंपर p.dspartnerid = hsm.dspartnerid कहां hsm.hotelid =?) X कहां x.rank = 1 DSPARTNER पी शामिल हों
बदलें ?
के किसी भी hotelid साथ आपकी पसंद।
यह केवल एक dspartnerid
मान वापस करेगा, भले ही एक से अधिक dspartnerid
के समान उच्च प्राथमिकता के साथ हो।
Comments
Post a Comment