Principale utente con più risposte
Ottenere l'ID di un record tramite MAX(datetimeoffset) e un altro parametro

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 Utentee 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
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
Tutte le risposte
-
io non ho capito niente.
qual'è la domanda ?
Edoardo Benussi
Microsoft MVP - Directory Services
edo[at]mvps[dot]org -
-
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
-
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_Aziendaed è perfetto, peccato che non riesca ad assegnare il valore alla variabile che mi serve :) ma quello è un altro discorso.
Grazie per il suggerimento
Stefano
-
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