Avatar billede KKKnudsen Nybegynder
07. januar 2015 - 00:41 Der er 3 kommentarer og
1 løsning

CASE, COALESCE og CONCAT i samme query?

Jeg har en database med byrådsmedlemmer og vil gerne lave en liste over de, som har forladt byrådet i løbet af valgperioden.

Umiddelbart ikke så svært:

SELECT kb_navn, kb_parti, kb_kommune, kb_slut FROM kb_medlemmer WHERE kb_slut > '2014-01-01'


Men ... Nogle har skiftet parti i løbet af perioden og skal listes med det parti, de aktuelt er medlem af. Jeg laver derfor også en COALESCE:

SELECT kb_navn, COALESCE(kb_partihop, kb_parti) AS Parti, kb_kommune, kb_slut FROM kb_medlemmer WHERE kb_slut > '2014-01-01'


MEN ... En enkelt er blevet løsgænger i perioden, hvilket jeg i databasen registrerer som 'UP'. I stedet for UP, vil jeg gerne have, at der står løsgænger i listen. Jeg prøver derfor med en CASE:

SELECT
    CASE
        WHEN kb_partihop LIKE 'UP'
            THEN '<em>løsgænger</em>'
        ELSE kb_partihop
    END AS Partilosg, kb_navn, COALESCE (kb_partihop, kb_parti) AS Parti, kb_kommune, kb_slut FROM kb_medlemmer WHERE kb_slut > '2014-01-01'


Problemet er nu, at jeg står med to kolonner (Partilosg til løsgængeren og Parti til alle de andre) og jeg vil gerne have dem samlet i kolonnen Parti.

Jeg har googlet mig til, at CONCAT kan være en del af løsningen, men jeg kan ikke regne ud, hvordan jeg får det flettet ind i ovenstående ...


Nogen bud?

vh Kenneth
Avatar billede arne_v Ekspert
07. januar 2015 - 01:42 #1
Hvad med:

SELECT kb_navn, COALESCE(IF(kb_partihop='UP', 'Loesgaenger', kb_partihop), kb_parti) AS Parti, kb_kommune, kb_slut FROM kb_medlemmer WHERE kb_slut > '2014-01-01'
Avatar billede arne_v Ekspert
07. januar 2015 - 01:43 #2
Det samme kunne laves med CASE men med kun 2 muligheder er IF nemmere.
Avatar billede KKKnudsen Nybegynder
07. januar 2015 - 02:30 #3
Det virker!

COALESCE(IF... giver præcis det resultat, jeg gik efter.

Tusind tak! - Du må gerne lægge et svar.

vh Kenneth
Avatar billede arne_v Ekspert
07. januar 2015 - 15:09 #4
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester