Nedre kod returnerar kontakter med
Mail Address, Private Address och Visit Address
Vissa personer kan dyka upp tre gånger efter queryn har körts eftersom samma person kan ha 3 olika addresstyper.
vad jag då vill göra är att:
Om en contact har "Mail Address" så ska den enbart returnera den raden för personen, finns det ej någon "Mail Address" så ska den kolla ifall personen har en "Private Address" och isf så ska den returneras, om varken "Mail Address" eller "Private Address" finns så skall till sist retuerna raden med "Visit Address" för personen. En person har alltid en eller flera av dessa tre adresser.
För att tydliggöra vad jag är ute efter så när jag kör min query nedanför så kan jag få följande resultat tillbaka:
ROW_ID-------NAME-----------ADDRESS------------ADDR_TYPE_CD
1-GGHT-------Anders Borg, --- stridgatan 3, -------- Mail Address
1-GGHT-------Anders Borg, --- västgatan 15,------- Private Address
1-GGHT-------Anders Borg, --- Kustvägen 5, ------- Visit Address
Men vad jag vill få tillbaka i detta fallet är enbart:
ROW_ID-------NAME-----------ADDRESS------------ADDR_TYPE_CD
1-GGHT-------Anders Borg, --- stridgatan 3, ------- Mail Address
Den skall alltså exkludera dom andra två raderna eftersom det finns en Mail Address och den har högst prioritering.
prioriteringsordningen är alltså:
1. Mailing Address
2. Private Address
3. Visit Address
Select
S_CONTACT.LAST_NAME,
S_CONTACT.FST_NAME,
S_CONTACT.ROW_ID,
S_CONTACT.X_PR_CON_ADDR_ID,
S_CONTACT.X_PR_CON_SPEC_ID,
S_CONTACT.PR_TERR_ID,
S_CONTACT.PR_POSTN_ID,
S_CONTACT.PR_AFFL_ID,
S_CONTACT.PERSON_UID,
S_CONTACT.BU_ID,
S_CONTACT.PAR_ROW_ID,
S_CON_ADDR.ADDR_TYPE_CD,
S_CON_ADDR.ACTIVE_FLG
from S_CONTACT
Inner JOIN S_CON_ADDR ON S_CON_ADDR.CONTACT_ID = S_CONTACT.ROW_ID
where
S_CON_ADDR.ADDR_TYPE_CD = 'Mailing Address' OR
S_CON_ADDR.ADDR_TYPE_CD = 'Private Address' OR
S_CON_ADDR.ADDR_TYPE_CD = 'Visit Address'