none
Ottenere l'ID di un record tramite MAX(datetimeoffset) e un altro parametro RRS feed

  • Domanda

  • Ciao a chi legge,

    ho una tabella con la seguente struttura: ID_Azienda (int), Utente (string), TimeStampa(datetimeoffset)

    Avrei bisogno di restituire solamente l'ID in un'istruzione SQL Server, ho provato con:

    SELECT        MAX(TimeStampa) AS Expr1, MAX(ID_Azienda) AS Expr2, Utente AS Expr3
    FROM            Tbl_Azienda
    GROUP BY Utente

    e giustamente ottengo il record interessato, in questo modo dovrei essere sicuro di prelevare l'ID di corretto, ovvero l'ultimo modificato dall'utente, che se altri utenti dopo scrivono altri record nel frattempo, vengono esclusi.

    Ora, visto che devo passare l'ID_Azienda a un nuovo form, utilizzando Visual Studio ho creato una query che popolo con il comando fill, mi serve, appunto solo l'ID_Azienda, così aprendo il nuovo form, lo popolo solo con il record che mi serve.

    Spero di essermi spiegato, grazie in anticipo.

    Stefano

    mercoledì 17 settembre 2014 13:07

Risposte

  • Ciao,

    puoi fare una cosa del tipo:

    WITH cte AS (
        SELECT ID_Azienda, MAX(TimeStampa) AS TimeStampa, MAX(Utente) AS Utente
        FROM Tbl_Azienda
        GROUP BY ID_Azienda
    )
    SELECT t.ID_Azienda
    FROM 
        Tbl_Azienda t 
        INNER JOIN cte ON t.ID_Azienda = cte.ID_Azienda

    HTH


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org

    • Contrassegnato come risposta Stefano Muzzin mercoledì 17 settembre 2014 16:42
    mercoledì 17 settembre 2014 16:06

Tutte le risposte

  • io non ho capito niente.

    qual'è la domanda ?


    Edoardo Benussi
    Microsoft MVP - Directory Services
    edo[at]mvps[dot]org

    mercoledì 17 settembre 2014 14:04
    Moderatore
  • Bene... vorrei solo l'ID utilizzando come filtri il MAX del campo TimeStampa e Utente

    Spero di essere sato più chiaro.

    Grazie per l'interessamento

    Stefano

    mercoledì 17 settembre 2014 14:06
  • Ciao,

    puoi fare una cosa del tipo:

    WITH cte AS (
        SELECT ID_Azienda, MAX(TimeStampa) AS TimeStampa, MAX(Utente) AS Utente
        FROM Tbl_Azienda
        GROUP BY ID_Azienda
    )
    SELECT t.ID_Azienda
    FROM 
        Tbl_Azienda t 
        INNER JOIN cte ON t.ID_Azienda = cte.ID_Azienda

    HTH


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org

    • Contrassegnato come risposta Stefano Muzzin mercoledì 17 settembre 2014 16:42
    mercoledì 17 settembre 2014 16:06
  • Ciao Alberto,

    grazie, funziona, l'ho solo modificato così:

    WITH cte AS (SELECT        ID_Azienda, MAX(TimeStampa) AS TimeStampa, MAX(Utente) AS Utente
                                 FROM            Tbl_Azienda
                                 GROUP BY ID_Azienda)
        SELECT        MAX(t.ID_Azienda) AS Expr1
         FROM            Tbl_Azienda AS t INNER JOIN
                                  cte AS cte_1 ON t.ID_Azienda = cte_1.ID_Azienda

    ed è perfetto, peccato che non riesca ad assegnare il valore alla variabile che mi serve :) ma quello è un altro discorso.

    Grazie per il suggerimento

    Stefano

    mercoledì 17 settembre 2014 16:45
  • Se ti serve avere il MAX(t.ID_Azienda) in una variabile, puoi modificare la seconda SELECT in questo modo:

    SELECT @MiaVariabile = MAX(t.ID_Azienda)
    FROM Tbl_Azienda t 
    INNER JOIN cte ON t.ID_Azienda = cte.ID_Azienda
    
    

    HTH


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org

    mercoledì 17 settembre 2014 19:39