none
trasporre colonna in riga in SQL RRS feed

  • Discussione generale

  • Salve a tutti

    come da titolo stavo cercando di trasporre una colonna in una riga. In pratica ho la seguente colonna COL:

    COl

    1

    2

    3

    4

    5

    6

    7

    e devo trasporre la colonna COL nella riga seguente:

    Riga

    1,2,3,4,5,6,7.

    Io sono riuscito a farlo con l'aiuto di un cursore nel modo seguente:

    DECLARE @var NCHAR(10) DECLARE @PATH VARCHAR(200) = '' DECLARE mycursor CURSOR FOR SELECT* FROM TEMP (tabella che ha la sola colonna COL) OPEN mycursor FETCH NEXT FROM mycursor INTO @var WHILE @@FETCH_STATUS = 0 BEGIN SET @PATH = ISNULL(RTRIM(CAST(@var AS VARCHAR(10)))+',','') + @Path FETCH NEXT FROM mycursor INTO @var END CLOSE mycursor DEALLOCATE mycursor


    Quello che volevo chiedere è se l'utilizzo del cursore è necessario per realizzare ciò o esiste anche un modo senza cursore.

    grazie.





    • Modificato dancko sabato 8 giugno 2013 21:50
    sabato 8 giugno 2013 20:53

Tutte le risposte

  • Ciao Dancko, 

    per pivottare le tabelle esiste una funzione apposita che puoi trovare nella microsoft developer network, a questo indirizzo troverai la reference per le funzioni PIVOT e UNPIVOT : http://msdn.microsoft.com/it-it/library/ms177410(v=sql.105).aspx

    domenica 9 giugno 2013 22:25
  • Ciao,

    se quello che ti serve è una sorta di CSV, prova a vedere questo esempio:

    USE tempdb;
    GO
    
    CREATE TABLE #FooData
    (
    	val varchar(10)
    );
    GO
    
    INSERT INTO #FooData (val)
    VALUES ('val 1'), ('val 2'), ('val 3'), ('val 4'), ('val 5');
    GO
    
    DECLARE @string varchar(MAX) = '';
    
    SELECT 
    	@string = @string + val + ', '
    FROM
    	#FooData;
    
    select SUBSTRING(@string, 0, LEN(@string))
    
    -- cleanup
    DROP TABLE #FooData;
    GO


    Alessandro Alpi SQL Server MVP

    martedì 11 giugno 2013 10:20
    Moderatore