2016-03-30 41 views
0
TablePatient.Patient_ID(PK) 

TableProviders.Encounter (joins to PK) 

TableProviders.Provider_Type 

TableProviders.Provider_ID 

TableNames.Full_Name 

TableNames.Provider_ID (joins to Table Names) 

我想要一個查詢,對於所有Patient_IDs,提供者的Full_NameProvider ID比左連接子查詢更好的解決方案?

約有30 provider_types

我已經使用左連接了一大堆左連接。這需要很長時間才能運行,我認爲我有一個技巧,我錯過了。

任何幫助?

回答

0

好吧,我以前的答案一點都沒有你的意思一致。您希望對每個的每個線路上的每個線路分配一個Patient_ID以及每個Full_name。我假設每個病人只有一個類型的提供者,而不是更多;如果還有更多的話,每個病人你都會有不止一行,反正我不認爲這是真的可能。

這是我的解決方案與樞軸。第一部分是讓它更容易理解,所以我在子查詢中創建了一個名爲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]等中寫入你想要的每種類型,只要把它們放在[]中,不需要其他字符'或其他任何東西。

如果你只放了一些類型,那麼查詢就不會顯示其他類型的提供者。

告訴我,如果有什麼不工作。

+0

太好了。這很好。謝謝。 – JoshuaB

+0

很高興聽到這個消息。那麼請你確認我的答案? :) – BD01

+0

有沒有辦法給輸出添加一個「CASE」?在爲「TABLE_PATIENT」製作別名「T」之後,我嘗試了「*」,還嘗試了「TABLE_PATIENT。*」和「T. *」,但都沒有奏效。 – JoshuaB

0

如果我理解您的意思,您只需按照患者ID和提供者ID對答案進行分組。一個完整的名稱是唯一的供應商ID權利?

這應該是這樣的

SELECT TablePatient.Patient_ID, 
TableProviders.Provider_ID, 
TableNames.Full_Name 


FROM TablePatient LEFT JOIN 
TableProviders on TablePatient.Patient_ID = TableProviders.Encounter 
LEFT JOIN 
TableNames on TableNames.Provider_ID = TablerProviders.Provider_ID 

group by TablePatient.Patient_ID, 
TableProviders.Provider_ID, 
TableNames.Full_Name 

您可以按TableNames.Full_Name或選擇First(TableNames.Full_Name)例如,如果確實是一個全名是唯一的供應商ID。

注:我使用的SQL服務器語法,可以有差異與Oracle ..

+0

讓我澄清一下:每個「患者ID」都是一排。每個「供應商類型」應該有一列。這些列應包含「提供者全名」 – JoshuaB

+0

一個提供者類型是否只有一個提供者ID?或者你可以只有一種類型的多個ID? 現在,你澄清我更好地理解。你需要做一個關鍵。只需回答提供者ID和提供者類型之間的關係是否唯一,我就可以編寫代碼。否則,請在網絡上查找「數據透視表」 – BD01

+0

有多種提供商類型,並且有多個提供商ID。 – JoshuaB

相關問題