Avatar billede svesen Nybegynder
11. maj 2011 - 10:53 Der er 3 kommentarer og
2 løsninger

Querry - konkatenering af afdeling for ansatte i en tabel

Jeg sider og skal skrive en querry som sammensætter ansatte der er ansat i mere end en afdeling til en celle.. ex.

JENS | Afdeling A
JENS | Afdeling B
PETER | Afdeling A
SOFIE | Afdeling B

Resultatet skulle gerne blive

JENS | Afdeling A Afdeling B
PETER | Afdeling A
SOFIE | Afdeling B
Avatar billede teepee Nybegynder
11. maj 2011 - 11:15 #1
Det er ikke til at se om du vil have de to afdelinger i samme kolonne, elelr i flere kolonner. Hvis sidstnævnte, så søg på MS SQL PIVOT i google. Der får du masser af eksempler.
Avatar billede svesen Nybegynder
11. maj 2011 - 11:27 #2
Meget gerne i samme kolonne
Avatar billede teepee Nybegynder
11. maj 2011 - 13:08 #3
Som jeg ser det har du to muligheder.

1) Du kan lave en distinct liste af navne, og kalde en stored procedure med et navn og få returneres en tekstreng med alle afdelingerne (slå op via en cursor i proceduren)

2) Du laver et view med pivot funktionen, og blot konkaterer alle afdelingskolonnerne sammen til én kolonne.

Umiddelbart ville jeg nok vælge at beholde data i flere afdelingskolonner, så det er brugbart for andet end menneskelige øjne. Men ellers er 1'erne, den klar letteste måde at gøre det på.
Avatar billede svesen Nybegynder
11. maj 2011 - 14:11 #4
Okay, jeg kæmpede en times til med pivot uden at få det til at virke, så jeg løste det med noget der svare til:

SELECT DISTINCT m.Navn,
(SELECT TOP 1 Afdeling FROM Medarbejder m1 WHERE m1.Navn = m.Navn ORDER BY m1.Afdeling ASC) +
(SELECT TOP 1 Afdeling FROM Medarbejder m1 WHERE m1.Navn = m.Navn ORDER BY m1.Afdeling DESC)
FROM Medarbejder m
Avatar billede svesen Nybegynder
24. juni 2011 - 11:56 #5
Jeg har fundet et endnu bedre svar på hvordan man samler en en-til-mange relation i MSSQL med XML Path

http://stackoverflow.com/questions/194852/concatenate-many-rows-into-a-single-text-string/545672#545672
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