Ich schreibe ein Migrationsskript, um Daten von einem Datenmodell zu einem anderen in Microsoft SQL Server Management Studio zu verschieben. Das Problem, auf das ich gestoßen bin, besteht darin, dass einige Tabellen in der Quelldatenbank Fremdschlüsselspalten enthalten, die ich vergleichen muss. Ein Code-Snippet:SQL Server: Verwenden von Spalten mit identischen Namen
INSERT INTO TargetDB.dbo.Encounter(EncounterID, PATID, DRG)
Select
visit_occurrence_id,
person_id,
(Select
Case when ((Select top 1 observation_concept_id from SourceDB.dbo.Observation where visit_occurrence_id = visit_occurrence_id) = 3040464)
Then (Select top 1 value_as_string from SourceDB.dbo.Observation where visit_occurrence_id = visit_occurrence_id)
Else NULL End
)
from SourceDB.dbo.Visit_occurrence
Wie Sie sehen, muss ich in SourceDB.dbo.Observation vergleichen visit_occurrence_id in SourceDB.dbo.Visit_occurrence visit_occurrence_id. Wie es ist, gibt es nur Werte aus der ersten Zeile in SourceDB.dbo.Observation zurück, da visit_occurrence_id immer gleich ist.
Was ist der richtige Weg, dies zu tun? Kann ich den ersten visit_occurrence_id-Wert einer Variablen in der Abfrage zuweisen, sodass sie einen eindeutigen Namen hat? Ich bin hier ziemlich verloren.
gerade voll qualifizieren den Namen: SourceDB.dbo.Observation.visit_occurence –
Sie können auch Alias der Tabelle: SourceDB.dbo.Observation AS A - dann verwenden A.visit_occurence in Ihrer WHERE –
, dass das Ticket ist! Die erste Lösung hat perfekt funktioniert, danke! – JazzBullets