2017-10-10 3 views
0

결과를 함께 반환하려면이 명령문을 어떻게 참여 시키나요?두 개의 select 문을 하나에 합치기

쿼리 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 

질의 2 : 예를 들어, 두 개의 쿼리 사이에 UNION ALL를 사용할 수

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

'유니온 올'아마도? – Arvo

답변

0

하나의 방법은 제안 된 다른 방법처럼 UNION ALL 방식을 사용하는 것입니다.

(Query 1) 
union all 
(Query 2) 

귀하의 경우에는 아마도 조인 조건이 약간 변경 될 수 있습니다. 아래에서 시도하십시오 :

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

# 구르를 시도했습니다. Union 근처의 잘못된 구문 얻기 –

+0

@JohnMolina는 먼저 실행중인 쿼리를 순서대로 사용합니다. – Leonidas199x

0

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

UNION ALL 

SELECT ... 
FROM .... 
WHERE... 
당신은 여기 UNION의 차이 UNION ALL에 대해 읽을 수 있습니다

: What is the difference between UNION and UNION ALL?

또한 CTE를 사용할 수 있습니다 - 당신이에 가입 할 수 있습니다 열, 예를 들어,이 경우

;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