sql >> Database >  >> RDS >> Sqlserver

Andere oplossing in plaats van Cursoring

Ik weet niet zeker of je echt een recursieve query nodig hebt, net als een Numbers/Tally-tabel om de equivalente volgnummers voor de "HUIDIGE" waarden te krijgen als die van de "PROPOSED" -waarden.

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. Verbinding maken met GCP Cloud SQL vanuit App Engine in afzonderlijk project

  2. Is het mogelijk om de tabelnaam als parameter in Oracle door te geven?

  3. mysql-updatekolom met waarde uit een andere tabel

  4. hoe de positierang van een specifieke rij te krijgen met alleen een mysql-query?