Очистить скрипт SQL Server - PullRequest
0 голосов
/ 22 мая 2018
SELECT pp.pat_key, MAX(pp.PROV_NPI) [Provider_ID], CONCAT(pp.LAST_NM,' ',pp.FIRST_NM) [Provider_Name]
  INTO pat_primary_provider
  FROM TRDW.dbo.PATIENT_PROVIDER pp
  WHERE IS_PCP=1
  AND pat_key IN (SELECT Consumer_ID FROM CareWire0521)
GROUP BY pp.PAT_KEY, pp.last_nm, pp.FIRST_NM;

SELECT ppp.*
  INTO ppp1
  FROM (SELECT PAT_KEY, MAX(provider_ID) AS maxprov FROM pat_primary_provider GROUP BY PAT_KEY) AS x 
  INNER JOIN pat_primary_provider AS ppp ON ppp.PAT_KEY = x.PAT_KEY AND ppp.Provider_ID = x.maxprov; 

Мне нужно получить результаты ppp1 только с использованием одного запроса (без операторов INTO) в SQL Server.Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Просто поместите первый запрос в CTE (без предложения INTO).Затем выберите из этого.

;WITH pat_primary_provider AS
(
  -- The first query goes here
)
-- The second query goes here

Но что-то подобное ниже может также вернуть PAT_KEY с максимальным PROV_NPI:

SELECT TOP 1 WITH TIES
   PAT_KEY, 
   MAX(PROV_NPI) AS [Max_Provider_ID], 
   CONCAT(LAST_NM,' ',FIRST_NM) AS [Patient_Provider_Full_Name]
  FROM TRDW.dbo.PATIENT_PROVIDER pp
  WHERE IS_PCP = 1
  AND PAT_KEY IN (SELECT Consumer_ID FROM CareWire0521)
GROUP BY PAT_KEY, LAST_NM, FIRST_NM
ORDER BY row_number() over (order by MAX(PROV_NPI) desc);
0 голосов
/ 22 мая 2018

Что плохого в том, чтобы просто вставить первый запрос как подзапросы во второй?

SELECT ppp.*
  FROM (SELECT PAT_KEY, MAX(provider_ID) AS maxprov FROM (SELECT pp.pat_key, MAX(pp.PROV_NPI) [Provider_ID], CONCAT(pp.LAST_NM,' ',pp.FIRST_NM) [Provider_Name]
  FROM TRDW.dbo.PATIENT_PROVIDER pp
  WHERE IS_PCP=1
  AND pat_key IN (SELECT Consumer_ID FROM CareWire0521)
GROUP BY pp.PAT_KEY, pp.last_nm, pp.FIRST_NM) GROUP BY PAT_KEY) AS x 
  INNER JOIN (SELECT pp.pat_key, MAX(pp.PROV_NPI) [Provider_ID], CONCAT(pp.LAST_NM,' ',pp.FIRST_NM) [Provider_Name]
  FROM TRDW.dbo.PATIENT_PROVIDER pp
  WHERE IS_PCP=1
  AND pat_key IN (SELECT Consumer_ID FROM CareWire0521)
GROUP BY pp.PAT_KEY, pp.last_nm, pp.FIRST_NM) AS ppp ON ppp.PAT_KEY = x.PAT_KEY AND ppp.Provider_ID = x.maxprov; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...