Ho avuto lo stesso problema del poster iniziale. Il mio caso d'uso era il seguente: Una tabella conteneva la data e l'ora di un evento sportivo. Poiché ricevo informazioni da fonti diverse, ho modificato lo schema del database in modo da avere un valore int per il tempo e il datetime (o forse solo la data) per la data dell'evento sportivo.
Questa è la mia domanda:
UPDATE Matches
SET StartTime= MatchTime.ThisMatchStartTime
FROM Matches AS M
INNER JOIN (SELECT CONVERT(int, CONVERT(varchar, DATEPART(Hour, MatchDate)) + RIGHT('00' + CONVERT(varchar, DATEPART(Minute, MatchDate)),2)) AS ThisMatchStartTime, MatchId
FROM [Matches]
WHERE SportTypeId=16) AS MatchTime ON M.MatchId=MatchTime.MatchId
WHERE StartTime > 2400
AND SportTypeId = 16;
Qualche spiegazione: Devi dare la sottoquery MatchStartTime un nome diverso altrimenti si ottiene un messaggio di avviso/errore da SQL Server. Ho anche dovuto aggiungere MatchId quindi sapevo che stavo aggiornando il Match corretto. Lo SportTypeId viene utilizzato per separare diversi sport nel database.
Grazie a @astander per avermi indicato nella giusta direzione. Senza il suo post avrei faticato un po 'di più per finire con questa soluzione.
È garantito che ci sia solo 1 città in poi per un trip_guid (o ti aspetti che lo gestisca in qualche modo per te)? –
Ci sono almeno 2 cites. L'idea è di mettere tutte le citazioni in un campo. – itdebeloper
Il tuo esempio funziona in Oracle. Per SQL Server sono applicabili le altre risposte. – Monstieur