2010-11-15 7 views
4

J'essaie de créer un rapport à l'aide de BIDS. Je souhaite que l'une des colonnes fournisse une adresse e-mail. J'ai deux tables contenant des adresses e-mail. L'un contient l'adresse e-mail d'origine fournie par le client lorsqu'il a commencé à faire des affaires avec nous. L'autre table contient une adresse e-mail (alternative) éventuellement mise à jour qu'ils ont soumise sur le site Web.SQL Server 2005: sélectionnez une colonne si une autre colonne est nulle ou contient un mot

Parfois, l'adresse e-mail d'origine utilise notre domaine d'entreprise car mon entreprise utilise pour créer des e-mails pour les clients qui n'ont pas d'adresse.

J'ai besoin de construire une requête qui évaluera l'adresse email d'origine. Il doit faire deux choses:

  1. Si l'adresse e-mail d'origine est vide, elle doit inclure l'adresse e-mail secondaire.
  2. Si l'adresse e-mail d'origine contient notre domaine ([email protected]), elle doit inclure l'autre adresse e-mail.
  3. Si les deux éléments ci-dessus ne sont pas le cas, il doit cracher l'adresse e-mail d'origine.

La requête devra cracher cette évaluation est une seule colonne appelée Email.

Est-ce que cela peut être fait? Dois-je regarder vers BIDS à la place? Si oui, dans quelle direction?

Merci d'avance pour votre aide.

Répondre

17

facile avec Peasy CASE. Quelque chose comme:

SELECT whatever1, whatever2, CASE 
WHEN originalemail IS NULL THEN alternateemail 
WHEN originalemail like '%domainname%' THEN alternateemail 
ELSE originalemail 
END AS Email 
FROM... 
1
SELECT 

CASE t1.orgEmail 

    WHEN NULL THEN t2.altEmail 

    WHEN LIKE '%domainname%' THEN t2.altEmail 

    ELSE 

     t1.orgEmail 

    END AS email 

FROM 

table1 AS t1, Table2 as t2