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