參考上面的圖像。我有診斷,服務和預防性服務,其中我有一個共同的字段名爲DxCode診斷和預防性服務。 PreventativeServices表中的DxCode是一個可選字段,因爲它充當我們的配置表。假設DxCode = DiagnosisCode,我已經基於圖像下列情況下,:以下情景的匹配標準
如果我們在兩個服務和診斷表有DxCode然後比較它DxCode和由此產生的行應該是可比較的輸出。如果發現輸出將是10060否則不行。
如果我們有DxCode = null或空白PreventativeServices然後再輸出將是10060
如果我們沒有在我們對RegistrationId = 247237診斷表中的行,但我們一起在PreventativeServices一排診斷代碼然後再最終會排不出,否則
出認沽將是相同的10060
我下面的查詢:
SELECT [ServiceID] AS PreventativeServiceId,
[CPTCode]
FROM PreventativeService ps
INNER JOIN [Services] s(NOLOCK)
ON ps.CPTCode = s.ServiceCode
LEFT JOIN Diagnoses dx(NOLOCK)
ON dx.RegistrationID = s.RegistrationID
WHERE s.RegistrationId = @RegistrationId
AND ps.IsActive = 1
AND @AdmitDate BETWEEN ps.StartDate AND Isnull(PS.EndDate, @AdmitDate)
AND @Gender = Isnull(ps.Gender, @Gender)
AND @Age BETWEEN Isnull(ps.AgeFrom, @Age) AND Isnull(ps.AgeTo, @Age)
AND dx.DiagnosisCode = (CASE
WHEN Rtrim(Ltrim(ps.DiagnosisCode)) = '' THEN dx.DiagnosisCode
ELSE ps.DiagnosisCode
END)
注意
DiagnosisCode在PreventativeServices將包含null和空白也是如此。
要求
dx.DiagnosisCode = (CASE
WHEN Rtrim(Ltrim(ps.DiagnosisCode)) = '' THEN dx.DiagnosisCode
ELSE ps.DiagnosisCode
END)
失敗的情況下,當我有空白( '')診斷PreventativeServices和診斷表沒有行
您在PreventativeService表中的服務表和CPTCode中是否有對應的registrationId和Service代碼? –
服務表中的ServiceCode等於預防性服務的CPTCode,服務中的註冊ID等於診斷表中的註冊ID。這是三個表如何相關 –