Ok, meine Antwort brachte nicht das, was Sie gemeint. Sie möchten die Tabelle so drehen, dass sie in jeder Zeile eine Patient_ID
mit jeder Full_name
für jede provider_type
enthält. Ich nehme an, dass jeder Patient nur einen Anbieter für einen Typ hat und nicht mehr; Wenn Sie mehr haben, haben Sie mehr als eine Zeile für jeden Patienten, und ich denke sowieso nicht, dass es wirklich möglich ist.
Hier ist meine Lösung mit Pivot. Der erste Teil soll es verständlicher machen, also erstelle ich in einer Unterabfrage eine Tabelle mit dem Namen TABLE_PATIENT
.
WITH TABLE_PATIENT AS
(
SELECT TablePatient.Patient_ID,
TableProviders.Provider_Type,
TableNames.Full_Name
FROM TablePatient LEFT JOIN
TableProviders on TablePatient.Patient_ID = TableProviders.Encounter
LEFT JOIN
TableNames on TableNames.Provider_ID = TableProviders.Provider_ID
group by TablePatient.Patient_ID,
TableProviders.Provider_Type,
TableNames.Full_Name
)
SELECT *
FROM TABLE_PATIENT
PIVOT
(
min(Full_name)
for Provider_type in ([type1], [type2],[type3])
) AS PVT
So TABLE_PATIENT
hat nur viele Zeilen für jeden Patienten, mit einem Anbieter jede Zeile, und die Schwenk setzt alles auf einer einzigen Zeile. Sag mir, wenn etwas nicht funktioniert.
Sie müssen jeden gewünschten Typ in [type1], [type2] usw. schreiben. Legen Sie sie einfach in [], kein anderes Zeichen als 'oder irgendetwas anderes benötigt.
Wenn Sie nur einige Typen eingeben, zeigt die Abfrage keine Anbieter anderer Typen an.
Sag mir, wenn etwas nicht funktioniert.
Großartig. Das hat super funktioniert. Vielen Dank. – JoshuaB
Froh, das zu hören. Könnten Sie mir bitte meine Antwort bestätigen? :) – BD01
Gibt es eine Möglichkeit, einen "CASE" zur Ausgabe hinzuzufügen? Ich habe "*" und auch "TABLE_PATIENT. *" Und "T. *" versucht, nachdem ich einen Alias "T" für "TABLE_PATIENT" erstellt habe, aber nichts davon hat funktioniert. – JoshuaB