• Mi dispiace,

    thought I had answered this long time ago:-D

    😎

    USE tempdb;

    GO

    create table #prova

    ( Valuta varchar(2),

    Misura DECIMAL(18,5)

    )

    insert into #prova values ('EU',1000)

    insert into #prova values ('$',2000)

    /* Adding a row number */

    ;WITH DIM_BASE AS

    (

    SELECT

    ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RID

    ,PX.Misura

    ,PX.Valuta

    FROM #prova PX

    )

    /* Splitting each column in two attributes */

    ,DIM_DET AS

    (

    SELECT

    D.RID

    ,'Valuta' AS [name]

    ,D.Valuta AS [value]

    FROM DIM_BASE D

    UNION ALL

    SELECT

    D.RID

    ,'Misura' AS [name]

    ,CAST(D.Misura AS VARCHAR(20)) AS [value]

    FROM DIM_BASE D

    )

    /* Join the sub-elements on the row number */

    SELECT

    DB.RID AS '@id'

    ,(SELECT

    DS.name AS 'dim/@name'

    ,DS.value AS 'dim/@value'

    FROM DIM_DET DS

    WHERE DS.RID = DB.RID

    FOR XML PATH(''), TYPE)

    FROM DIM_BASE DB

    FOR XML PATH('obs'), TYPE, ROOT('root')

    DROP TABLE #prova

    Results

    <root>

    <obs id="1">

    <dim name="Valuta" value="EU" />

    <dim name="Misura" value="1000.00000" />

    </obs>

    <obs id="2">

    <dim name="Valuta" value="$" />

    <dim name="Misura" value="2000.00000" />

    </obs>

    </root>