मेरे पास नीचे दी गई तालिका है
Code Data
SL Payroll 1
GV Payroll 3
Global Payroll 1
TimeHCM 1
SL Payroll 0
GV Payroll 0
Global Payroll 0
TimeHCM 0
SL Payroll 0
GV Payroll 0
Global Payroll 0
TimeHCM 0
मैं डेटा को समतल करने के लिए पिवट फ़ंक्शन का उपयोग कर रहा हूं
Select *
From (
Select [Code]
,[Data]
,[Col] = concat('Data',Row_Number() over (Partition By [Code] Order by 1/0))
From #BidStatusCalculation
) src
Pivot (max([Data]) for [Col] in ([Data1],[Data2],[Data3],[Data4],[Data5],[Data6],[Data7],[Data8],[Data9],[Data10],[Data11],[Data12])) pvt
और मुझे नीचे परिणाम मिल रहा है
Code Month1 Month2 Month3
GV Payroll 0 0 **3**
मुद्दा यह है कि यह डेटा को नीचे से ऊपर की ओर स्थानांतरित कर रहा है जिसका अर्थ है कि यह पहला रिकॉर्ड लेता है जो इसे पाता है और इसे अंतिम बनाता है और मैं चाहता था कि यह नीचे जैसा हो
Code Month1 Month2 Month3
GV Payroll **3** 0 0
मुझे क्वेरी में क्या बदलाव करना चाहिए?
अद्यतन मैंने सॉर्टऑर्डर कॉलम जोड़ा जैसा कि सुझाव दिया गया था और तालिका अब नीचे दिखाई गई है।
Code Data SortOrder
SL Payroll 1 1
GV Payroll 3 2
Global Payroll 1 3
TimeHCM 1 4
SL Payroll 0 1
GV Payroll 0 2
Global Payroll 0 3
TimeHCM 0 4
SL Payroll 0 ....
GV Payroll 0
Global Payroll 0
TimeHCM 0
1 उत्तर
यह आपकी सबक्वायरी है:
Select [Code], [Data],
[Col] = concat('Data', Row_Number() over (Partition By [Code] Order by 1/0))
From #BidStatusCalculation
order by 1/0
एक बहुत ही अजीब रचना है। यह इसके बराबर है: order by (select null)
। यानी कोई आदेश नहीं है।
अच्छा, आपको समस्या है। तालिकाएँ, यहाँ तक कि अस्थायी तालिकाएँ, SQL में अक्रमित सेट का प्रतिनिधित्व करती हैं। यदि आप अपने परिणामों के लिए तालिका के कुछ सहज क्रम पर निर्भर हैं, तो आप भाग्य से बाहर हैं। एसक्यूएल ऐसा नहीं करता है।
आपको एक कॉलम चाहिए जो ऑर्डरिंग निर्दिष्ट करता है - संभवतः किसी प्रकार का दिनांक कॉलम या आईडी।
संबंधित सवाल
नए सवाल
sql
संरचित क्वेरी भाषा (एसक्यूएल) डेटाबेस को क्वेरी करने के लिए एक भाषा है। प्रश्नों में कोड उदाहरण, तालिका संरचना, नमूना डेटा और DBMS कार्यान्वयन के लिए एक टैग (जैसे MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, आदि) का उपयोग किया जाना चाहिए। यदि आपका प्रश्न केवल एक विशिष्ट DBMS (विशिष्ट एक्सटेंशन / सुविधाओं का उपयोग करता है) से संबंधित है, तो इसके बजाय उस DBMS के टैग का उपयोग करें। एसक्यूएल के साथ टैग किए गए सवालों के जवाब में आईएसओ / आईईसी मानक एसक्यूएल का उपयोग करना चाहिए।