Splittare un record in più record

di il
7 risposte

Splittare un record in più record

Buongiorno a tutti, avrei un problema da sottoporvi (se fattibile):

avendo estratto un record formato da questi campi:

nrrigadati
2023-1001A,B,C,D

Si riesce a splittare in questo modo

nrrigadati
2023-1001A
2023-1001B
2023-1001C
2023-1001D

Grazie in anticipo per chi vorrà aiutarmi

7 Risposte

  • Re: Splittare un record in più record

    Hai una applicazione scritta in qualche linguaggio?

  • Re: Splittare un record in più record

    27/02/2023 - oregon ha scritto:


    Hai una applicazione scritta in qualche linguaggio?

    No, se si riesce dovrei estrarre i dati in quel modo per portarli su un report (tramite devexpress)

  • Re: Splittare un record in più record

    Stai riproponendo questa

    https://www.iprogrammatori.it/forum-programmazione/sql-server/estrarre-stringa-in-pi-righe-t50918.html

    ?

  • Re: Splittare un record in più record

    No, perchè quella che citi te mi serviva con un campo singolo e come da forum ho risolto con split_string, in questo caso essendo che ho anche altri campi non mi permette di farlo perchè lo split_string ritorna più valori

  • Re: Splittare un record in più record

    Salve,

    beh, @Oregon ha ragione, non e' molto diverso dalla richiesta precedente, che puo' essere semplificata utilizzando il medesimo sistema di STRING_SPLIT…

    trivialmente,

    INSERT INTO dbo.t 
    	VALUES ('2023-100', 1, 'A,B,C,D' ), ('2023-101', 1, 'A' ), ('2023-102', 2, 'A,B' ), ('2023-103', 1, '' );
    	
    	
    WITH cteSplitted AS (
    	SELECT t.Nr, t.Riga
    		, value
    		FROM dbo.t
    		CROSS APPLY STRING_SPLIT(Dati, ',')  
    	)
    	SELECT t.Nr, t.Riga, c.value
    		FROM dbo.t
    			LEFT JOIN cteSplitted c ON c.Nr = t.Nr AND c.Riga = t.Riga
    		ORDER BY t.Nr, t.Riga, c.value;
    – < -----
    Nr         Riga        value
    ---------- ----------- --------
    2023-100   1           A
    2023-100   1           B
    2023-100   1           C
    2023-100   1           D
    2023-101   1           A
    2023-102   2           A
    2023-102   2           B
    2023-103   1           
    

    salutoni romagnoli
    – 
    Andrea

  • Re: Splittare un record in più record

    Cribio,

    mi sono complicato la vita “per senza niente”…  usando SPLIT_STRING hai gia' “completamente esaurito” il tuo risultato desiderato, se ho ben compreso la tua richiesta…

    INSERT INTO dbo.t 
    VALUES ('2023-100', 1, 'Z,X,R,A,B,C,D' ), ('2023-101', 1, 'A' ), ('2023-102', 2, 'A,B' ), ('2023-103', 1, '' );
    SELECT t.Nr, t.Riga
    , value
    FROM dbo.t
     CROSS APPLY STRING_SPLIT(Dati, ',') 
    ORDER BY t.Nr, t.Riga;
    --< ----------
    Nr         Riga        value
    ---------- ----------- ---------
    2023-100   1           A
    2023-100   1           B
    2023-100   1           C
    2023-100   1           D
    2023-100   1           R
    2023-100   1           X
    2023-100   1           Z
    2023-101   1           A
    2023-102   2           A
    2023-102   2           B
    2023-103   1           
    

    non c'e' bisogno di altre manipolazioni… oppure non ho compreso la richiesta :D

    salutoni romagnoli
    – 
    Andrea

  • Re: Splittare un record in più record

    Ciao, grazie dell'interessamento, oeffettivamente adesso ho visto dove sbagliavo….praticamente è la stessa cosa dell'altro post

    Scusatemi per la ripetitività 

Devi accedere o registrarti per scrivere nel forum
7 risposte