Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [SQL Server] Problema inserimento con MERGE

    ciao!

    ho un problema con il MERGE in SQL Server.
    in pratica se c'è MATCH lo mando un update funziona.
    sennò deve fare la insert, ma non funziona.
    nel senso che non trovo il record, però non mi da errore.

    codice:
    MERGE INTO Timesheet_ore AS s
    USING (SELECT tlo_timesheet,
                  tlo_fascia_oraria,
                  tlo_tipo_incarico
           FROM Timesheet_ore
           WHERE tlo_timesheet = 100
             AND tlo_fascia_oraria = 3
             AND tlo_tipo_incarico = 'UFFICIOPS') AS t
    ON (s.tlo_timesheet = t.tlo_timesheet
        AND s.tlo_fascia_oraria = t.tlo_fascia_oraria
        AND s.tlo_tipo_incarico = t.tlo_tipo_incarico)
    WHEN MATCHED THEN
        UPDATE
        SET tlo_data_da         = GETDATE(),
            tlo_data_a          = GETDATE(),
            tlo_minuti_lavorati = 1000,
            tlo_note            = '',
            tlo_data_modifica   = GETDATE()
    WHEN NOT MATCHED THEN
        INSERT (tlo_timesheet, tlo_data_da, tlo_data_a, tlo_minuti_lavorati, tlo_fascia_oraria, tlo_tipo_incarico, tlo_note,
                tlo_data_aggiunta, tlo_data_modifica)
        VALUES (100, GETDATE(), GETDATE(), 1000, 3, 'UFFICIOPS', 'note', GETDATE(), GETDATE());

  2. #2
    la INSERT da sola funzionerebbe?

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2024
    Messaggi
    2
    prova questo:
    codice:
    MERGE INTO Timesheet_ore AS sUSING (VALUES 
            (100, 3, 'UFFICIOPS')
          ) AS t(tlo_timesheet, tlo_fascia_oraria, tlo_tipo_incarico)
    ON (s.tlo_timesheet = t.tlo_timesheet
        AND s.tlo_fascia_oraria = t.tlo_fascia_oraria
        AND s.tlo_tipo_incarico = t.tlo_tipo_incarico)
    WHEN MATCHED THEN
        UPDATE
        SET tlo_data_da         = GETDATE(),
            tlo_data_a          = GETDATE(),
            tlo_minuti_lavorati = 1000,
            tlo_note            = '',
            tlo_data_modifica   = GETDATE()
    WHEN NOT MATCHED THEN
        INSERT (tlo_timesheet, tlo_data_da, tlo_data_a, tlo_minuti_lavorati, tlo_fascia_oraria, tlo_tipo_incarico, tlo_note,
                tlo_data_aggiunta, tlo_data_modifica)
        VALUES (100, GETDATE(), GETDATE(), 1000, 3, 'UFFICIOPS', 'note', GETDATE(), GETDATE());

  4. #4
    Quote Originariamente inviata da jojo3 Visualizza il messaggio
    prova questo:
    codice:
    MERGE INTO Timesheet_ore AS sUSING (VALUES 
            (100, 3, 'UFFICIOPS')
          ) AS t(tlo_timesheet, tlo_fascia_oraria, tlo_tipo_incarico)
    ON (s.tlo_timesheet = t.tlo_timesheet
        AND s.tlo_fascia_oraria = t.tlo_fascia_oraria
        AND s.tlo_tipo_incarico = t.tlo_tipo_incarico)
    WHEN MATCHED THEN
        UPDATE
        SET tlo_data_da         = GETDATE(),
            tlo_data_a          = GETDATE(),
            tlo_minuti_lavorati = 1000,
            tlo_note            = '',
            tlo_data_modifica   = GETDATE()
    WHEN NOT MATCHED THEN
        INSERT (tlo_timesheet, tlo_data_da, tlo_data_a, tlo_minuti_lavorati, tlo_fascia_oraria, tlo_tipo_incarico, tlo_note,
                tlo_data_aggiunta, tlo_data_modifica)
        VALUES (100, GETDATE(), GETDATE(), 1000, 3, 'UFFICIOPS', 'note', GETDATE(), GETDATE());
    ciao!

    scusate il ritardo nella risposta.
    questa query mi sembra funzionare!

    grazie!

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.