2017-10-10 1 views
0

Comment joindre ces instructions pour retourner les résultats ensemble?Joindre deux instructions select en une seule

Requête 1:

select scheduleentry.scheduledate, 
    patientdemographics.accountnumber, 
    patientdemographics.firstname, 
    patientdemographics.middleinitial, 
    patientdemographics.lastname, 
    patientdemographics.address1, 
    patientdemographics.address2, 
    patientdemographics.city, 
    patientdemographics.state, 
    patientdemographics.zipcode, 
    patientdemographics.dateofbirth, 
    patientdemographics.sex, 
    patientdemographics.hometelephone, 
    patientinsuranceprofiles.insurance1name, 
    patientinsuranceprofiles.insurance1policynumber, 
    patientinsuranceprofiles.insurance1policygroupnumber, 
    patientinsuranceprofiles.insurance1guarantorfirstname as insuredfirstname, 
    patientinsuranceprofiles.insurance1guarantormiddleinitial as insuredmiddleinitial, 
    patientinsuranceprofiles.insurance1guarantorlastname as insuredlastname, 
    patientinsuranceprofiles.insurance1guarantoraddress1 as insuredaddress1, 
    patientinsuranceprofiles.insurance1guarantoraddress2 as insuredaddress2, 
    patientinsuranceprofiles.insurance1guarantorcity as insuredcity, 
    patientinsuranceprofiles.insurance1guarantorstate as insuredstate, 
    patientinsuranceprofiles.insurance1guarantorzipcode as insuredzip, 
    patientinsuranceprofiles.insurance1guarantordateofbirth as insureddob, 
    patientinsuranceprofiles.insurance1guarantorsex as insuredsex, 
    patientinsuranceprofiles.insurance1guarantortelephonenumber as insuredhomenumber, 
    insurances.eligibilitypayornumber 
from patientdemographics 
inner join patientinsuranceprofiles 
on patientdemographics.accountnumber = patientinsuranceprofiles.patientaccountnumber 
inner join scheduleentry 
on patientinsuranceprofiles.patientaccountnumber = scheduleentry.patientaccount 
inner join insurances 
on patientinsuranceprofiles.insurance1mnemonic = insurances.mnemonic 
where datediff(d, getdate(), scheduledate) = 1 
    and patientinsuranceprofiles.activeflag = 1 
order by scheduledate asc 

Requête 2:

select scheduleentry.scheduledate, 
    patientdemographics.accountnumber, 
    patientdemographics.firstname, 
    patientdemographics.middleinitial, 
    patientdemographics.lastname, 
    patientdemographics.address1, 
    patientdemographics.address2, 
    patientdemographics.city, 
    patientdemographics.state, 
    patientdemographics.zipcode, 
    patientdemographics.dateofbirth, 
    patientdemographics.sex, 
    patientdemographics.hometelephone, 
    patientinsuranceprofiles.insurance2name, 
    patientinsuranceprofiles.insurance2policynumber, 
    patientinsuranceprofiles.insurance2policygroupnumber, 
    patientinsuranceprofiles.insurance2guarantorfirstname as insuredfirstname, 
    patientinsuranceprofiles.insurance2guarantormiddleinitial as insuredmiddleinitial, 
    patientinsuranceprofiles.insurance2guarantorlastname as insuredlastname, 
    patientinsuranceprofiles.insurance2guarantoraddress1 as insuredaddress1, 
    patientinsuranceprofiles.insurance2guarantoraddress2 as insuredaddress2, 
    patientinsuranceprofiles.insurance2guarantorcity as insuredcity, 
    patientinsuranceprofiles.insurance2guarantorstate as insuredstate, 
    patientinsuranceprofiles.insurance2guarantorzipcode as insuredzip, 
    patientinsuranceprofiles.insurance2guarantordateofbirth as insureddob, 
    patientinsuranceprofiles.insurance2guarantorsex as insuredsex, 
    patientinsuranceprofiles.insurance2guarantortelephonenumber as insuredhomenumber, 
    insurances.eligibilitypayornumber 
from patientdemographics 
inner join patientinsuranceprofiles 
on patientdemographics.accountnumber = patientinsuranceprofiles.patientaccountnumber 
inner join scheduleentry 
on patientinsuranceprofiles.patientaccountnumber = scheduleentry.patientaccount 
inner join insurances 
on patientinsuranceprofiles.insurance2mnemonic = insurances.mnemonic 
where datediff(d, getdate(), scheduledate) = 1 
    and patientinsuranceprofiles.activeflag = 1 
order by scheduledate asc 
+2

«union tous» peut-être? – Arvo

Répondre

0

Une méthode consiste à utiliser l'approche UNION ALL comme suggéré.

(Query 1) 
union all 
(Query 2) 

Pour votre cas, peut-être le cas et peu de modifications à la condition de jointure fonctionnera. S'il vous plaît essayez le ci-dessous:

select se.scheduledate, 
    pd.accountnumber, 
    pd.firstname, 
    pd.middleinitial, 
    pd.lastname, 
    pd.address1, 
    pd.address2, 
    pd.city, 
    pd.state, 
    pd.zipcode, 
    pd.dateofbirth, 
    pd.sex, 
    pd.hometelephone, 
    case when i.mnemonic = pip.insurance1mnemonic then pip.insurance1name      else pip.insurance2name end, 
    case when i.mnemonic = pip.insurance1mnemonic then pip.insurance1policynumber    else pip.insurance2policynumber end, 
    case when i.mnemonic = pip.insurance1mnemonic then pip.insurance1policygroupnumber  else pip.insurance2policygroupnumber end, 
    case when i.mnemonic = pip.insurance1mnemonic then pip.insurance1guarantorfirstname  else pip.insurance2guarantorfirstname as insuredfirstname end, 
    case when i.mnemonic = pip.insurance1mnemonic then pip.insurance1guarantormiddleinitial else pip.insurance2guarantormiddleinitial as insuredmiddleinitial end, 
    case when i.mnemonic = pip.insurance1mnemonic then pip.insurance1guarantorlastname  else pip.insurance2guarantorlastname as insuredlastname end, 
    case when i.mnemonic = pip.insurance1mnemonic then pip.insurance1guarantoraddress1  else pip.insurance2guarantoraddress1 as insuredaddress1 end, 
    case when i.mnemonic = pip.insurance1mnemonic then pip.insurance1guarantoraddress2  else pip.insurance2guarantoraddress2 as insuredaddress2 end, 
    case when i.mnemonic = pip.insurance1mnemonic then pip.insurance1guarantorcity   else pip.insurance2guarantorcity as insuredcity end, 
    case when i.mnemonic = pip.insurance1mnemonic then pip.insurance1guarantorstate   else pip.insurance2guarantorstate as insuredstate end, 
    case when i.mnemonic = pip.insurance1mnemonic then pip.insurance1guarantorzipcode   else pip.insurance2guarantorzipcode as insuredzip end, 
    case when i.mnemonic = pip.insurance1mnemonic then pip.insurance1guarantordateofbirth  else pip.insurance2guarantordateofbirth as insureddob end, 
    case when i.mnemonic = pip.insurance1mnemonic then pip.insurance1guarantorsex    else pip.insurance2guarantorsex as insuredsex end, 
    case when i.mnemonic = pip.insurance1mnemonic then pip.insurance1guarantortelephonenumber else pip.insurance2guarantortelephonenumber as insuredhomenumber end, 
    i.eligibilitypayornumber 
from patientdemographics pd 
inner join patientinsuranceprofiles pip 
on pd.accountnumber = pip.patientaccountnumber 
inner join scheduleentry se 
on pip.patientaccountnumber = se.patientaccount 
inner join insurances i 
on i.mnemonic in (pip.insurance1mnemonic, pip.insurance2mnemonic) 
where datediff(d, getdate(), scheduledate) = 1 
    and pip.activeflag = 1 
order by scheduledate asc 
+0

#GurV J'ai essayé cela. Obtenir une syntaxe incorrecte près de Union –

+0

@JohnMolina prend l'ordre de la requête que vous exécutez en premier. – Leonidas199x

0

Vous pouvez utiliser UNION ALL entre les deux requêtes par exemple

SELECT ... 
FROM ... 
WHERE... 

UNION ALL 

SELECT ... 
FROM .... 
WHERE... 

Vous pouvez lire sur les différences de UNION et UNION ALL ici: What is the difference between UNION and UNION ALL?

Vous pouvez également utiliser CTE - s'il y a une colonne, vous pouvez rejoindre sur, par exemple

;WITH Query1 AS 
(
SELECT Column1 
FROM ... 
) 
,Query2 AS 
( 
SELECT Column1 
FROM ... 
) 
SELECT  * 
FROM  Query1 AS Q1 
INNER JOIN Query2 AS Q2 ON Q1.Column1 = Q2.Column1