मेरे पास नीचे दी गई तालिका है

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
SP1 23 जिंदा 2019, 23:58

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 में अक्रमित सेट का प्रतिनिधित्व करती हैं। यदि आप अपने परिणामों के लिए तालिका के कुछ सहज क्रम पर निर्भर हैं, तो आप भाग्य से बाहर हैं। एसक्यूएल ऐसा नहीं करता है।

आपको एक कॉलम चाहिए जो ऑर्डरिंग निर्दिष्ट करता है - संभवतः किसी प्रकार का दिनांक कॉलम या आईडी।

1
Gordon Linoff 24 जिंदा 2019, 01:32