Aggiornamento Valori con verifica Parametri

di il
21 risposte

21 Risposte - Pagina 2

  • Re: Aggiornamento Valori con verifica Parametri

    thepseud ha scritto:


    Grazie...speriamo ma xk secondo te è concettualmente sbagliata?
    non lo so ;
    un caso come questo qui sotto è possibile ? (nota che ho aggiunto un altro 5110 qui *** tra gli 8220 )

    Se si cosa bisogna fare ?

    (202111, 1, 5110)
    ,(202111, 2, 5110)
    ,(202111 ,3, 5110)
    ,(202111, 4, 8220)
    ,(202111 ,5, 5110) --8220 <-- devo aggiornare il 5110 col valore precedente
    ,(202111 ,6, 5110) -- *** un caso come questo è possibile ?
    ,(202111 ,7, 8220)
    ,(202112 , 1, 1021)
    ,(202112 , 2 , 1020) --1021 <-- devo aggiornare il 1020 col valore precedente
    ,(202112 , 3, 1021)
  • Re: Aggiornamento Valori con verifica Parametri

    Buongiorno , si è possibile.
  • Re: Aggiornamento Valori con verifica Parametri

    Infatti, non funziona se ho un codice in più : azz;

    Sto lavorando a questa e sembra andare(ho tolto infatti le funzioni LEAD...e così ripeto sembra andare...speriamo bene

    ;with target(row#,call_id,num_progressivo,codice
    )
    as(

    Ma con una stored come potevo fare?


    select
    row_number()over(order by call_id,num_progressivo)
    ,call_id
    ,num_progressivo
    ,codice

    from dbo.test as A
    ),
    cte (row#,call_id,num_progressivo,codice,valore_calcolato)
    as(
    --Q_INIZIALE
    select top(1)
    row#
    ,call_id
    ,num_progressivo
    ,codice
    ,codice
    from target
    where row#=1
    union all
    --Q_RICORSIVA
    select
    A.row#
    ,A.call_id
    ,A.num_progressivo
    ,A.codice
    ,case
    when exists(select * from target as B where B.codice=A.codice and (B.call_id<A.call_id or (B.call_id=A.call_id and B.num_progressivo<A.num_progressivo)))
    then B.valore_calcolato
    else A.codice
    end
    from target as A
    join cte as B on A.row#-1=B.row#
    -- where row#>1
    )
    select *
    from cte
    order by row#
  • Re: Aggiornamento Valori con verifica Parametri

    C'è ancora qualcosa che non ho capito della logica di aggiornamento.

    Prendi questo caso che hai fatto

    202112 1 1021
    202112 2 1020 1021 <-- devo aggiornare il 1020 col valore precedente (1021)
    202112 3 1021

    in base a quanto hai scritto

    thepseud ha scritto:


    Partiamo da un assioma : ogni codice è univoco e non può essere ripetuto nell'ordinamento (num_progressivo)

    Partendo dal primo codice , in questo caso 5110 con num_progresso = 1 verifico il record successivo, se anche
    questo codice è uguale passo a quello dopo, ossia quello con num_progressivo = 2.

    Se invece il record successivo cambia , nel mio caso ho codice 8220 : un codice nuovo , verifico il record successivo
    se uguale a 5110 lo devo aggiornare con 8220 ,
    perchè come dicevo prima è un errore e quando un codice è nuovo nella sequenza successiva non può essere ripetuto : è univoco.
    non dovrebbe essere così ?

    202112 1 1021
    202112 2 1020
    202112 3 1021 1020 <-- devo aggiornare il 1021 col valore precedente (1020)
  • Re: Aggiornamento Valori con verifica Parametri

    Onestamente domani chiedo... hai ragione il 1020 è univoco...chiedo al PM e vediamo che mi dice...

    Grazie ....ma solo una curiosità ma con la stored procedure come potrei fare?

    Grazie mille ragazzi veramente grazie
  • Re: Aggiornamento Valori con verifica Parametri

    thepseud ha scritto:


    Onestamente domani chiedo... hai ragione il 1020 è univoco...chiedo al PM e vediamo che mi dice...
    occhio se non è 1020 perchè la tua ultima
    ,che mi sembra funzioni bene secondo la logica che hai scritto, riporta 1020.

    Bravo !
    ti chiamo quando devo fare query cervellotiche

    Unico neo, quando si hanno molte righe, potrebbero essere prestazioni poco soddisfacenti dovute alla query ricorsiva

    ... ma è tutto da vedere facendo prove ed ottimizzazioni avendo a disposizioni tanti dati.

    P.S.
    Non te lo prometto, ma se ho tempo provo a fare una stored
  • Re: Aggiornamento Valori con verifica Parametri

    " ..occhio se non è 1020 perchè la tua ultima
    ,che mi sembra funzioni bene secondo la logica che hai scritto, riporta 1020."-- > Si domani verifico bene

    "Bravo !
    ti chiamo quando devo fare query cervellotiche .." Se non era per voi nn ci arrivavo: assolutamente se serve ci sono , però spero che non ti serva sono diventato scemo , ma sempre al servizio...

    Grazie mille a tutti , domani verifico e vi aggiorno
Devi accedere o registrarti per scrivere nel forum
21 risposte