Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

कर्सरिंग के बजाय अन्य समाधान

मुझे यकीन नहीं है कि "वर्तमान" मानों के लिए "प्रस्तावित" मानों के बराबर अनुक्रम संख्या प्राप्त करने के लिए आपको वास्तव में एक संख्या/टैली तालिका जितनी एक पुनरावर्ती क्वेरी की आवश्यकता है।

With 
    Numbers As 
    (
    Select Row_Number() Over ( Order By C1.object_id ) As Value
    From sys.columns As C1
        Cross Join sys.columns As C2
    )
    , ProposedSequences As
    (
    Select  NTRIId
        , Row_Number() Over ( Order By NTRIId ) As Sequence
    From Table
    Where NTRITCode = 'PROPOSED'
    Group By NTRIId
    )
    , CurrentSequences As
    (
    Select RID, NTRITCode, NTRIId, Parameter, Usage, Rate
        , Numbers.Value As Sequence
    From Table
        Cross Join Numbers
    Where NTRITCode = 'Current'
        And Numbers.Value <= (Select Max(Sequence) From ProposedSequence)
    )
Select Sequence, RID, NTRITCode, NTRIId, Parameter, Usage, Rate
From CurrentSequences
Union All
Select PS.Sequence, T.RID, T.NTRITCode, T.NTRIId, T.Parameter, T.Usage, T.Rate
From ProposedSequences As PS
    Join Table As T
        On T.NTRIId = PS.NTRIId
Order By PS.Sequence, T.NTRITCode


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अपडेट स्टेटमेंट में क्रॉस अप्लाई का उपयोग करना

  2. SQL सर्वर में एक विशाल तालिका डेटा को किसी अन्य तालिका में कैसे कॉपी करें

  3. SQL में स्पेस द्वारा स्ट्रिंग को कैसे विभाजित करें

  4. SQL समस्या:CONTAINS() का उपयोग करना काम नहीं करता है, लेकिन LIKE ठीक काम करता है

  5. SQL सर्वर एक विशिष्ट प्रारूप में डेटा ट्री दिखाने के लिए