Хорошо, мой предыдущий ответ не соответствует на все, что вы имели в виду. Вы хотите повернуть таблицу, чтобы иметь на каждой строке один Patient_ID
с каждым Full_name
за каждые provider_type
. Я предполагаю, что у каждого пациента есть только один провайдер для одного типа и не более; если больше, у вас будет более одной строки для каждого пациента, и в любом случае я не думаю, что это действительно возможно.
Вот мое решение с шарниром. Первая часть - сделать ее более понятной, поэтому я создаю таблицу под названием «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
Так TABLE_PATIENT
просто имеет много строк для каждого пациента, с одним поставщиком каждой строки, а стержень ставит все на одной строке. Скажите, если что-то не сработает.
Вам нужно написать каждый тип, который вы хотите, в [type1], [type2] и т. Д. Просто поместите их внутри [], никакой другой символ не нужен как «или что-то еще».
Если вы помещаете только некоторые типы, тогда запрос не будет отображать поставщиков других типов.
Сообщите мне, если что-то не работает.
Отлично. Это отлично поработало. Благодарю. – JoshuaB
Рад это слышать. Не могли бы вы подтвердить мой ответ? :) – BD01
Есть ли способ добавить «CASE» к выходу? Я попробовал «*», а также «TABLE_PATIENT. *» И «T. *» после создания псевдонима «T» для «TABLE_PATIENT», но ничего из этого не получилось. – JoshuaB