Search code examples
sqlsql-server-2012case-expression

CASE WHEN THEN ELSE change to union?


I was wondering if it is possible to change a CASE when then else to a union all, or something like this.

I hope that it is possible ...

example

CASE WHEN(C.Salutation = 'Dhr.' OR C.salutation = 'dhr.')
         THEN 'Meneer'+' '+ISNULL(C.middlename+' ','')+C.Lastname
    WHEN(C.Salutation = 'Mw.' OR C.salutation = 'mw.')
         THEN 'Mevrouw'+' '+ISNULL(C.middlename+' ','')+C.Lastname
    ELSE 'Meneer/Mevrouw '+ISNULL(C.middlename+' ','')+ISNULL(C.Lastname,'') END AS 'K5'

i hope you guys can help me out..


Solution

  • Well, yes you can, but it is ugly:

    SELECT 'Meneer'+' '+ISNULL(C1.middlename+' ','')+C1.Lastname AS 'K5'
    FROM table C1
    WHERE C1.Salutation = 'Dhr.' OR C1.salutation = 'dhr.'
    UNION
    SELECT 'Mevrouw'+' '+ISNULL(C2.middlename+' ','')+C2.Lastname
    FROM table C2
    WHERE C2.Salutation = 'Mw.' OR C2.salutation = 'mw.'
    UNION
    SELECT 'Meneer/Mevrouw '+ISNULL(C.middlename+' ','')+ISNULL(C.Lastname,'')
    FROM table C3
    WHERE C3.Salutation != 'Mw.' AND C3.salutation != 'mw.'
    AND C3.Salutation != 'Dhr.' AND C3.salutation != 'dhr.'