Springen naar inhoud


- - - - -
DB .NET

Query 1 Kolom Met Items Gescheiden Door Scheidingsteken

.NET

  • Log in a.u.b. om te beantwoorden
Er zijn 6 reacties in dit onderwerp

#1 Scheepers

Scheepers

    Senior Developer

  • Leden
  • PipPipPip
  • 219 berichten
    Laatst bezocht gisteren, 21:56

Geplaatst op 06 juni 2018 - 14:51

De query die ik nu heb bevat meerdere rijen met het enige verschil 1 item. Er zitten wel inner joins bij.
Nu wil ik 1 rij en het item waar het verschil in zit plaatsen in 1 kolom en de items met scheidingsteken scheiden

Bijvoorbeeld:
Nr   Naam   Code
1     Test1    VX
1     Test1    FX
2 Test2   AB

Moet worden:
Nr      Naam Code
1   Test1   VX;FX
2   Test2   AB

Ik gebruik VB2010

#2 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1092 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 06 juni 2018 - 17:36

Bericht bekijkenScheepers, op 06 juni 2018 - 14:51, zei:

De query die ik nu heb bevat meerdere rijen met het enige verschil 1 item. Er zitten wel inner joins bij.
Nu wil ik 1 rij en het item waar het verschil in zit plaatsen in 1 kolom en de items met scheidingsteken scheiden

Bijvoorbeeld:
Nr   Naam   Code
1 Test1    VX
1 Test1    FX
2 Test2   AB

Moet worden:
Nr Naam Code
1   Test1   VX;FX
2   Test2   AB

Ik gebruik VB2010

Mogelijk zijn (afhankelijk van je databank) bijvoorbeeld GROUP_CONCAT en STRING_AGG en STUFF, enzovoort ...
Dus wat is het merk (en de versie) van je databank?

Maar ik zou dat zelf gewoon na de query doen met Linq.

#3 Scheepers

Scheepers

    Senior Developer

  • Leden
  • PipPipPip
  • 219 berichten
    Laatst bezocht gisteren, 21:56

Geplaatst op 07 juni 2018 - 08:16

Ik gebruik SQL Server Managment Studio 2012.
Met Linq heb ik geen ervaring.

#4 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1092 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 07 juni 2018 - 21:18

Bericht bekijkenScheepers, op 07 juni 2018 - 08:16, zei:

Ik gebruik SQL Server Managment Studio 2012.
Dat is dan een beetje pech: STRING_AGG() bestaat maar vanaf 2017.
Je kan FOR XML (vanaf 2008) gebruiken (beter is FOR JSON maar dat is ook maar vanaf 2014 of zelfs 2016).

Dus:
SELECT DISTINCT
Nr,
Naam,
STUFF(
	 (SELECT N', ' + Test2.Code
	 FROM Test Test2
	 WHERE Test.Nr = Test2.Nr
	 ORDER BY Test2.Code ASC
	 FOR XML PATH(''),TYPE).value('text()[1]','nvarchar(max)')
,1,2,N'') As Codes
FROM Test

Zie ook String Aggregation in the World of SQL Server

#5 Scheepers

Scheepers

    Senior Developer

  • Leden
  • PipPipPip
  • 219 berichten
    Laatst bezocht gisteren, 21:56

Geplaatst op 11 juni 2018 - 14:20

Werkt prima. Bedankt.

#6 Scheepers

Scheepers

    Senior Developer

  • Leden
  • PipPipPip
  • 219 berichten
    Laatst bezocht gisteren, 21:56

Geplaatst op 12 juni 2018 - 15:44

Toch nog een vraag.
In de originele tabel staat ook een status en dat kan bijvoorbeeld een X,A,P zijn.
Ook deze wil ik toevoegen in bovenstaande query met een FOR XML.
Is dat mogelijk en kan ik daar ook een voorbeeld van krijgen?

#7 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1092 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 15 juni 2018 - 08:36

Bericht bekijkenScheepers, op 12 juni 2018 - 15:44, zei:

In de originele tabel staat ook een status en dat kan bijvoorbeeld een X,A,P zijn.
Ook deze wil ik toevoegen in bovenstaande query met een FOR XML.
Is dat mogelijk
Waarschijnlijk wel.

Bericht bekijkenScheepers, op 12 juni 2018 - 15:44, zei:

en kan ik daar ook een voorbeeld van krijgen?
Misschien.
Het is me nu niet duidelijk hoe je dat als resultaat wil. Maak je voorbeeldje uit deze (eerste) post nog eens overnieuw, met de bron en het resultaat dat je wil.





Ook met taq DB .NET, .NET voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[DB .NET] Untitled 1

Met dank aan J├╝rgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)