查询:
select
ag.AGENTID as AGENTID, ag.AGENTNAME as AGENTNAME,
case when pc.CONTACTTYPECD='M' then pc.CONTACTNUM end as 'MOBILE',
case when pc.CONTACTTYPECD='R' then pc.CONTACTNUM end as 'RESIDENCE',
case when pc.CONTACTTYPECD='EM' then pc.CONTACTNUM end as 'EMERGENCY_NO'
from
AGENT ag
left join
PARTY p on p.PARTYID = ag.PARTYID
left join
PARTYCONTACT pc on pc.PARTYSEQ = p.PARTYSEQ
where
ag.AGENTID = '10000005'
输出
预期输出
答案 0 :(得分:1)
试试这个:
SELECT ag.AGENTID AS AGENTID, ag.AGENTNAME AS AGENTNAME,
MAX(CASE WHEN pc.CONTACTTYPECD='M' THEN pc.CONTACTNUM END) AS 'MOBILE',
MAX(CASE WHEN pc.CONTACTTYPECD='R' THEN pc.CONTACTNUM END) AS 'RESIDENCE',
MAX(CASE WHEN pc.CONTACTTYPECD='EM' THEN pc.CONTACTNUM END) AS 'EMERGENCY_NO'
FROM AGENT ag
LEFT JOIN PARTY p ON p.PARTYID = ag.PARTYID
LEFT JOIN PARTYCONTACT pc ON pc.PARTYSEQ = p.PARTYSEQ
WHERE ag.AGENTID = '10000005'
GROUP BY ag.AGENTID, ag.AGENTNAME
答案 1 :(得分:1)
或单独加入每种类型的联系人......
SELECT ag.AGENTID AS AGENTID, ag.AGENTNAME AS AGENTNAME,
MobileContact.CONTACTNUM AS 'MOBILE',
ResidenceContact.CONTACTNUM AS 'RESIDENCE',
EmergencyContact.CONTACTNUM AS 'EMERGENCY_NO'
FROM AGENT ag
LEFT JOIN PARTY p ON p.PARTYID = ag.PARTYID
LEFT JOIN PARTYCONTACT as MobileContact
ON MobileContact.PARTYSEQ = p.PARTYSEQ
AND MobileContact.CONTACTTYPECD='M'
LEFT JOIN PARTYCONTACT as ResidenceContact
ON ResidenceContact.PARTYSEQ = p.PARTYSEQ
AND ResidenceContact.CONTACTTYPECD='R'
LEFT JOIN PARTYCONTACT as EmergencyContact
ON EmergencyContact.PARTYSEQ = p.PARTYSEQ
AND EmergencyContact.CONTACTTYPECD='EM'
WHERE ag.AGENTID = '10000005'