[英]How to add inner join to query with multiple joins?
我試圖將內部聯接添加到由其他人完成的查詢中,但是卻不斷出錯。 我試圖找出添加它的正確方法,要添加的內部聯接是:
select
pa.AdmissionID, pad.AdmissionID, pad.AdmTypeID
from
v_dbPatientAdmissions pa
inner join
V_DbPatientAdmissionAddition pad on pad.AdmissionID = pa.AdmissionID
where
pad.AdmTypeID in (3, 37, 42, 43, 44, 51)
我要向其添加內部聯接的查詢是:
SELECT
PA.RegCode UHID, PA.Specialisation, A.CREATEDATE ADM_ORDER,
PA.CREATEDATE ADM_DATE,
(CAST((DATEDIFF(minute, A.CREATEDATE, PA.CREATEDATE))/60 AS VARCHAR)+' H:'
+ CAST((DATEDIFF(minute,A.CREATEDATE, PA.CREATEDATE))%60 AS VARCHAR)+' M') AS DURATION
FROM
(SELECT
M.IPID, M.PatientID, A.CREATEDATE
FROM
v_dbPatientAdvice A
INNER JOIN
v_dbPatientMonitoring M ON M.MonitorID = A.MonitorID
WHERE
A.FollowUpType = 2) A
INNER JOIN
(SELECT
PA.PatientID, PA.CREATEDATE, PA.RegCode, S.Specialisation, PA.PatientType
FROM
v_dbPatientAdmissions PA
INNER JOIN
v_dbSpecializations S ON S.SpecialiseID = PA.SpecialiseID) PA ON A.PatientID = PA.PatientID
AND PA.PatientType = 2
AND PA.CREATEDATE > A.CREATEDATE
AND PA.CREATEDATE < DATEADD(DAY, 1, A.CREATEDATE)
WHERE
A.CREATEDATE > '2017-01-01'
AND A.CREATEDATE < DATEADD(DAY, 1, '2018-09-20')
要添加的內部V_DbPatientAdmissionAddition
具有一個新表V_DbPatientAdmissionAddition
,另一表已在查詢v_dbPatientAdmissions
。
我嘗試將其添加為子查詢,也嘗試不使用From v_dbPatientAdmissions
添加它,但語法仍然存在問題。
如果有人可以幫助我將內部聯接添加到查詢中,那將很有幫助! 我希望我能夠清楚地解釋這個問題。
您可以使用CTE簡化這項工作:
with cte as (
select pa.AdmissionID, pad.AdmissionID,pad.AdmTypeID
from v_dbPatientAdmissions pa inner join
V_DbPatientAdmissionAddition pad on pad.AdmissionID=pa.AdmissionID
where pad.AdmTypeID in (3, 37, 42, 43, 44, 51)
)
select . . .
from . . . join
newtable nt
on ?.? = nt.? -- whatever the `join` conditions are
. . .
您可以擴展第二個子查詢。 您還需要用要返回的新列擴展主SELECT。
SELECT PA.RegCode UHID, PA.Specialisation, A.CREATEDATE ADM_ORDER, PA.CREATEDATE ADM_DATE,
(CAST((DATEDIFF(minute, A.CREATEDATE, PA.CREATEDATE))/60 AS VARCHAR)+' H:'
+ CAST((DATEDIFF(minute,A.CREATEDATE, PA.CREATEDATE))%60 AS VARCHAR)+' M') AS DURATION
FROM (SELECT M.IPID, M.PatientID, A.CREATEDATE
FROM v_dbPatientAdvice A
INNER JOIN v_dbPatientMonitoring M ON M.MonitorID = A.MonitorID
WHERE A.FollowUpType = 2
) A
INNER JOIN (SELECT PA.PatientID, PA.CREATEDATE, PA.RegCode, S.Specialisation, PA.PatientType,
PA.AdmissionID, pad.AdmissionID, pad.AdmTypeID -- New SELECT columns
FROM v_dbPatientAdmissions PA
INNER JOIN v_dbSpecializations S ON S.SpecialiseID = PA.SpecialiseID
INNER JOIN V_DbPatientAdmissionAddition pad on pad.AdmissionID=pa.AdmissionID -- New JOIN
WHERE pad.AdmTypeID in (3,37,42,43,44,51) -- new WHERE
) PA ON A.PatientID = PA.PatientID
AND PA.PatientType = 2
AND PA.CREATEDATE > A.CREATEDATE
AND PA.CREATEDATE < DATEADD(DAY, 1, A.CREATEDATE)
WHERE A.CREATEDATE > '2017-01-01'
AND A.CREATEDATE < DATEADD(DAY, 1, '2018-09-20')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.