Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [SQL SERVER 2008 R2] - Query

    ciao a tutti,

    avrei necessità di effettuare una update sui record tenendo conto di quanto segue:

    se in una giornata (data) trovo il record con la causale F ma non ci sono altri record con causale diversa da F allora non tocco nulla. Diversamente se a parità di matricola e data oltre a trovare un record con la causale F trovo anche altro/i record con causale diversa da F allora faccio update sulla F

    la tabella è così composta:

    codice (varchar)- matricola(varchar) - data (datetime) - causale (varchar)

    Grazie a tutti.
    IncorrectSyntax

  2. #2
    riesci a fare una SELECT con quei criteri?

  3. #3
    a dire la verità non ci sono riuscito altrimenti avrei fatto anche l'update. pensavo però che forse con una tabellina d'appoggio ...
    IncorrectSyntax

  4. #4
    fatti ispirare da questa

    SELECT codice, matricola, data
    FROM tabella
    WHERE
    causale<>'F'
    GROUP BY codice, matricola, data

  5. #5
    Quote Originariamente inviata da optime Visualizza il messaggio
    fatti ispirare da questa

    SELECT codice, matricola, data
    FROM tabella
    WHERE
    causale<>'F'
    GROUP BY codice, matricola, data
    Ma io devo fare update sui record con causale F ma solo se a parità di matricola e data ci sono uno o più record con causale diversa da F, altrimenti l'update non va eseguita.
    Ultima modifica di IncorrectSintax; 06-02-2018 a 15:28
    IncorrectSyntax

  6. #6
    hai detto: se so fare la select so fare anche l'update.

    la select che ti ho suggerito va bene?

  7. #7
    faccio un esempio che forse è più chiaro:

    record 1 A159 12345 01/01/2018 F
    record 2 A159 12345 01/01/2018 M
    record 3 A159 12345 02/01/2018 F
    record 4 A159 12345 03/01/2018 PRH
    record 5 A159 12345 03/01/2018 PRG

    dove A159 è il codice, 12345 la matricola poi abbiamo data e causale

    Dovendo analizzare i record per codice, matricola e data:

    sul record 1 va fatta update perchè nel giorno 01/01/2018 c'è un record con la causale F ed anche un'altro record con altra causale
    sul record 2 non va fatta update perchè nel giorno 02/01/2018 non c'è altro record con causale diversa da F
    sui record 3 e 4 non va fatta update perche nel giorno 03/01/2018 non è presente la causale F

    L'update va quindi eseguita solo sui record con causale F e solo quando nella stessa giornata, per la stessa matricola, oltre al record con causale F vi è un altro record con causale diversa da F.

    Spero che ora sia più comprensibile.

    Ciao.
    Ultima modifica di IncorrectSintax; 06-02-2018 a 17:49
    IncorrectSyntax

  8. #8
    sul record 1 va fatta update perchè nel giorno 01/01/2018 c'è un record con la causale F ed anche un'altro record con altra causale
    sul record 3 non va fatta update perchè nel giorno 02/01/2018 non c'è altro record con causale diversa da F
    sui record 4 e 5
    non va fatta update perche nel giorno 03/01/2018 non è presente la causale F


    questa analisi mi pare più corretta

  9. #9
    Quote Originariamente inviata da optime Visualizza il messaggio
    sul record 1 va fatta update perchè nel giorno 01/01/2018 c'è un record con la causale F ed anche un'altro record con altra causale
    sul record 3 non va fatta update perchè nel giorno 02/01/2018 non c'è altro record con causale diversa da F
    sui record 4 e 5
    non va fatta update perche nel giorno 03/01/2018 non è presente la causale F


    questa analisi mi pare più corretta
    si è più corretta ...

    Ma quindi mi sai aiutare?
    IncorrectSyntax

  10. #10
    SELECT codice, matricola, data
    INTO #tmp1
    FROM tabella
    WHERE
    causale<>'F'
    GROUP BY codice, matricola, data

    SELECT codice, matricola, data
    INTO #tmp2
    FROM tabella
    WHERE
    causale='F'
    GROUP BY codice, matricola, data

    SELECT t1.codice, t1.matricola, t1.data
    FROM #tmp1 t1 INNER JOIN #tmp2 t2
    ON
    t1.codice=t2.codice AND t1.matricola=t2.matricola AND t1.data=t2.data

    scritta a orecchio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.