Gibt es eine effizientere Möglichkeit, diese Abfrage durchzuführen? Es läuft, dauert aber ca. 6 Minuten. Ich glaube, die Multiple-Select-Anweisungen erzeugen die Verzögerung. Running von ihnen selbst die Rückkehr ein Ergebnis in < 1 Sek.Verwenden von Auswählen für mehrere Spalten
SELECT
x.HPCODE AS [Health Plan],
x.HPFROMDT AS [Eff Date],
x.MEMBID AS [ID #],
x.LASTNM AS [Mbr L Name],
x.FIRSTNM AS [Mbr F Name],
x.BIRTH AS DOB,
DATEDIFF(YEAR, birth, GETDATE()) AS Age,
x.PCP as [Prov ID#],
Y.LASTNAME as [Prov L Name],
Y.FIRSTNAME as [Prov F Name],
PA.PHONE as [Provider Phone],
(SELECT MAX(cd.FROMDATESVC)
FROM [dbo].[Claim_Masters] cm
LEFT JOIN [dbo].[Claim_Details] cd ON cm.claimno = cd.claimno
AND cm.MEMBID = x.MEMBID
WHERE LEFT(cd.PROCCODE, 5) IN ('G0402', 'G0438', 'G0439')
AND YEAR(cm.SERVICEDATEFROM) = YEAR(GETDATE())) AS [AWV],
(SELECT MAX(cd.FROMDATESVC)
FROM [dbo].[Claim_Masters] cm
LEFT JOIN [dbo].[Claim_Details] cd ON cm.claimno = cd.claimno
AND cm.MEMBID = x.MEMBID
WHERE (LEFT(cd.PROCCODE, 5) IN ('G0402', 'G0438', 'G0439')
OR RIGHT(cd.PROCCODE, 5) IN ('99490', '99487', '99489'))
AND YEAR(cm.SERVICEDATEFROM) = YEAR(GETDATE())) AS [CCM],
(select max(cd.FROMDATESVC) from [dbo].[Claim_Masters] cm left join [dbo].[Claim_Details] cd on cm.claimno = cd.claimno and cm.MEMBID = x.MEMBID Where (Right(cd.PROCCODE,5) in ('99495','99496'))and Year(cm.SERVICEDATEFROM) = Year(Getdate())) as [TCM],
(select max(cd.FROMDATESVC) from [dbo].[Claim_Masters] cm left join [dbo].[Claim_Details] cd on cm.claimno = cd.claimno and cm.MEMBID = x.MEMBID Where (Right(cd.PROCCODE,5) in ('99211','99212','99213','99214','99215','99201','99202','99203','99204','99205'))and Year(cm.SERVICEDATEFROM) = Year(Getdate())) as [Office],
(select max(cd.FROMDATESVC) from [dbo].[Claim_Masters] cm left join [dbo].[Claim_Details] cd on cm.claimno = cd.claimno and cm.MEMBID = x.MEMBID Where (Right(cd.PROCCODE,5) = '1170F')and Year(cm.SERVICEDATEFROM) = Year(Getdate())) as [FUNC],
(select max(cd.FROMDATESVC) from [dbo].[Claim_Masters] cm left join [dbo].[Claim_Details] cd on cm.claimno = cd.claimno and cm.MEMBID = x.MEMBID Where (Right(cd.PROCCODE,5) in ('1157F','1158F'))and Year(cm.SERVICEDATEFROM) = Year(Getdate())) as [ACP],
(select max(cd.FROMDATESVC) from [dbo].[Claim_Masters] cm left join [dbo].[Claim_Details] cd on cm.claimno = cd.claimno and cm.MEMBID = x.MEMBID Where (Right(cd.PROCCODE,5) in ('0521F','1125F','1126F'))and Year(cm.SERVICEDATEFROM) = Year(Getdate())) as [PAIN],
(select max(cd.FROMDATESVC) from [dbo].[Claim_Masters] cm left join [dbo].[Claim_Details] cd on cm.claimno = cd.claimno and cm.MEMBID = x.MEMBID Where (Right(cd.PROCCODE,5) in ('99605','99606','1160F','1111F','1159F'))and Year(cm.SERVICEDATEFROM) = Year(Getdate())) as [MTM]
FROM
[dbo].[MEMB_COMPANY] X
LEFT JOIN
[dbo].[PROV_COMPANY] Y ON X.PCP = Y.PROVID
JOIN
[dbo].[PROV_ADDINFO] PA ON Y.PROV_MPI_NO = PA.PROV_MPI_NO
AND (PA.EDI_DEFAULT = 1)
WHERE
(ISNULL(x.OPTHRUDT, '') = '' OR
x.OPTHRUDT > GETDATE())
AND X.HPCODE = 'CHPS'
Verwendung 'JOIN' ???? – Ravi
Sind Sie sicher, dass Sie verstehen, was Ihr Ziel ist? Kann ein Mitglied mehrere Ansprüche haben? Wenn dies möglich ist, können (können) Ihre Unterabfragen Daten aus unterschiedlichen Ansprüchen abrufen, da Sie diese nur anhand der Mitglieds-ID korrelieren. Ein Anspruch könnte also TCM liefern, während ein anderer ACP liefert. – SMor
Diese Abfrage scheint nicht unterstützt zu werden. Denke ein oder zwei Monate später an deine Kollegen oder dich selbst. – svgrafov