Miałem ten sam problem co pierwszy plakat. Mój przypadek użycia był następujący: Jedna tabela zawierała datę i godzinę wydarzenia sportowego. Ponieważ otrzymuję informacje z różnych źródeł, zmieniłem schemat bazy danych, więc miałem wartość int dla czasu i daty (lub może tylko daty) dla daty wydarzenia sportowego.
To moje zapytanie:
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;
Niektóre wyjaśnienia: Trzeba dać podkwerendę MatchStartTime inną nazwę inaczej otrzymasz ostrzeżenie/błąd z SQL Server. Musiałem również dodać MatchId, więc wiedziałem, że aktualizuję poprawny mecz. SportTypeId służy do oddzielania różnych dyscyplin sportowych w bazie danych.
Dzięki @astander za skierowanie mnie we właściwym kierunku. Bez jego stanowiska zmagałbym się trochę bardziej z rozwiązaniem tego problemu.
Czy gwarantowane jest tylko 1 miasto w poi dla trip_guid (lub czy spodziewasz się, że jakoś sobie z tym poradzi)? –
Istnieją co najmniej 2 miasta. Chodzi o to, aby umieścić wszystkie cytowania w jednym polu. – itdebeloper
Twój przykład działa w Oracle. W przypadku serwera SQL pozostałe odpowiedzi mają zastosowanie. – Monstieur