**** अद्यतन में अधिकतम मूल्य के आधार पर वर्गीकृत क्वेरी: **एसक्यूएल सर्वर स्तंभ
रैंक() विभाजन वाक्य रचना से अधिक एमएस एसक्यूएल सर्वर में उपलब्ध का उपयोग कर 2005 वास्तव में, यह सही दिशा में मुझे इंगित करता है (या शायद मुझे "मैं" लिखना चाहिए) मुझे कोड में पंक्तियों की गणना करने के बिना मुझे आवश्यक परिणाम देने में असमर्थ है।
उदाहरण के लिए, अगर हम टॉप चयन (1) रैंक के, मैं केवल एक मान, मिल अर्थात्।, स्लॉट 1. अगर मैं मैक्स() का उपयोग, तो मैं प्रत्येक स्लॉट के लिए शीर्ष क्रम मूल्य प्राप्त .. जो मेरे मामले में काम नहीं करता है, क्योंकि यदि स्लॉट 2 का शीर्ष मान शून्य है, लेकिन यह MAX मान के बगल में है, तो वह खाली है, जो मैं चाहता हूं।
तो, एक पूरी तरह से T-SQL समाधान खोजने में असमर्थ है, मैं एसक्यूएल में और उसके बाद ग्राहक के पक्ष कोड में परिणाम की गणना जितना संभव हो उतना छानने का सहारा लिया गया है।
मूल:
मैं गया है advanced T-SQL books, StackOverflow समाप्त होता रहा है और कैसे या तो इन्हीं का उपयोग करके या विश्लेषणात्मक कार्यों का उपयोग करके इस प्रश्न को संभालने के लिए पता लगाने की कोशिश गूगल। अब तक, मैंने सही संयोजन पर नहीं मारा है।
मेरे पास शेड्यूल हैं (उच्च मूल्य, अधिक प्राथमिकता)। प्रत्येक शेड्यूल में फाइलों के साथ क्रमांकित स्लॉट की एक निश्चित संख्या की प्लेलिस्ट होती है।
मुझे क्या करना है, सभी शेड्यूल और उनकी संबंधित प्लेलिस्ट को लाइन करना है, और प्रत्येक स्लॉट के लिए, उच्चतम रैंकिंग मान वाले शेड्यूल से फ़ाइल को पकड़ें।
इसलिए, अगर मैं प्लेलिस्ट और कार्यक्रम है, इसलिए जैसे Schedule.Rank DESC द्वारा आदेश दिया जो में शामिल होने के साथ एक विशिष्ट ग्राहक के लिए एक प्रश्न था:
PlaylistId Schedule.Rank SlotNumber FileId
100 100 1 1001
100 100 2 NULL
100 100 3 NULL
200 80 1 1101
200 80 2 NULL
200 80 3 NULL
300 60 1 1201
300 60 2 NULL
300 60 3 2202
400 20 1 1301
400 20 2 2301
400 20 3 NULL
इस से, मैं FileId खोजने की जरूरत है मैक्स रैंकिंग पंक्ति प्रति स्लॉटनंबर के लिए:
SlotNumber FileId Schedule.Rank
1 1001 100
2 2301 20
3 2202 60
यह कैसे करें इस पर कोई विचार है?
नीचे तालिका परिभाषाएं:
CREATE TABLE dbo.Playlists(
id int NOT NULL)
CREATE TABLE dbo.Customers(
id int NOT NULL,
name nchar(10) NULL)
CREATE TABLE dbo.Schedules(
id int NOT NULL,
rank int NOT NULL,
playlistid int NULL,
customerid int NULL)
CREATE TABLE dbo.PlaylistSlots(
id int NOT NULL,
slotnumber int NOT NULL,
playlistid int NULL,
fileid int NULL)
+1 सिर्फ इसलिए कि कुछ समय में एक उचित प्रश्न पूछने के लिए बहुत अच्छा है, सभी प्रासंगिक तालिकाओं और सभी के साथ - धन्यवाद !!! -) –
बीटीडब्ल्यू, पिवट के पास इसके साथ कुछ करने के लिए कुछ भी नहीं है (वह है चीजों को "फ़्लिपिंग" के बारे में, इसलिए पंक्ति मान कॉलम बन जाते हैं) इसलिए मैं तदनुसार संपादन कर रहा हूं। –
मुझे यकीन नहीं है कि जिस पुस्तक का आप उल्लेख कर रहे हैं वह अच्छा है। इन्हें आजमाएं: http://www.sql.co.il/ –