La requête pivot SQL Server renvoie une seule ligne

Mes données sont comme ceci:

ID ColumnName columnnvalue ----------------------------- 13 seraialnew tester name 13 serial 123123 13 seraialnew am444 13 serial 33333 SELECT id,seraialnew,serial FROM ( SELECT id,columnnvalue, ColumnName FROM dbo.formValues ) cols PIVOT( MAX(id) FOR ColumnName IN(seraialnew,serial) )p 

et get un résultat de ligne unique au lieu de multiples

Si vous avez le même id il n'y aura qu'une seule string, donc j'ai changé l'identifiant pour 2 de vos lignes:

 ;WITH formValues AS ( SELECT * FROM (VALUES (13,'seraialnew','tester name'), (13,'serial','123123'), (14,'seraialnew','am444'), (14,'serial','33333') ) as t(ID, ColumnName, columnnvalue) ) SELECT id,seraialnew,serial FROM ( SELECT id,columnnvalue, ColumnName FROM formValues ) cols PIVOT( MAX(columnnvalue) FOR ColumnName IN(seraialnew,serial) )p 

Te donnera:

 id seraialnew serial 13 tester name 123123 14 am444 33333 

Autrement:

 SELECT * FROM ( SELECT id, columnnvalue, ColumnName+CAST(ROW_NUMBER() OVER (PARTITION BY ColumnName ORDER BY ColumnName) as nvarchar(1)) as ColumnName FROM formValues ) cols PIVOT( MAX(columnnvalue) FOR ColumnName IN(seraialnew1,serial1,seraialnew2,serial2) )p 

Avec même id = 13 vous donnera ceci:

 id seraialnew1 serial1 seraialnew2 serial2 13 am444 33333 tester name 123123