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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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