2017-04-05 61 views
2

我有一個連接3,4表(如select * from table1 join table2 join table3)的查詢,並且多次在我的存儲過程中使用相同的查詢。有沒有辦法將這個查詢保存在一個地方,我可以在整個存儲過程中使用它(在單個存儲過程中)?SQL服務器T SQL 2014(重複使用相同的查詢)

SELECT p.PK_PatientID 
     FROM Patients p 
     INNER JOIN PT ON e.FK_PatientID = p.PK_PatientID 
     INNER JOIN PN n ON n.FK_PatientEncounterID = e.PK_PatientEncounterID 
     INNER JOIN BP ep ON ep.FK_PatientEncounterID = e.PK_PatientEncounterID 
     INNER JOIN SOP pd ON ep.FK_SharedProcedureDetailID = pd.PK_SharedOfficeProcedureDetailID 
     INNER JOIN CQM vs ON pd.FK_SharedProcedureCode = vs.Code 

這是我想在我的程序多的時間來使用它查詢

+0

顯示你的代碼。 – dfundako

+0

再次檢查我的問題。我編輯。我想在過程中多次使用相同的查詢,如果在整個SP中使用了類似CTE的東西(而在CTE中,它只能在下一行中使用,而不是整個過程) – Sujatha

+1

您是否正在使用該查詢的結果在加入?如果是這樣,您可以通過將結果插入臨時表中來啓動您的程序。 – dfundako

回答

1

你可以使用臨時表或表變量和數據插入到它,如果你正在使用的查詢多次

如果你不想使用臨時原因表或表變量未知的,你可以使用一個視圖

1

您可以選擇查詢存儲在一個視圖:

CREATE VIEW vW_Example 
AS 
    SELECT p.PK_PatientID 
     FROM Patients p 
     INNER JOIN PT ON e.FK_PatientID = p.PK_PatientID 
     INNER JOIN PN n ON n.FK_PatientEncounterID = e.PK_PatientEncounterID 
     INNER JOIN BP ep ON ep.FK_PatientEncounterID = e.PK_PatientEncounterID 
     INNER JOIN SOP pd ON ep.FK_SharedProcedureDetailID = pd.PK_SharedOfficeProcedureDetailID 
     INNER JOIN CQM vs ON pd.FK_SharedProcedureCode = vs.Code 

然後,你可以這樣調用視圖:

SELECT * FROM vW_Example