代わりに、複数の単一の行の結果を得るにはid
ので、1つの文字列のみが存在します私はあなたの行の2のためにidを変更:
;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
はあなたを与える:
0123を
id seraialnew serial
13 tester name 123123
14 am444 33333
別の方法:同じid = 13
で
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
はあなたにこの与える:
id seraialnew1 serial1 seraialnew2 serial2
13 am444 33333 tester name 123123
IDをすべて同じである - '13'。それで、あなたは1行を得るのです。 – gofr1
何を返すのですか? –
テーブルに動的な結果の追加列を作成し、最後の子テーブルに値を追加し、この組み合わせで結果を取得します。 idがテーブルにカラムを追加すると、この結果は新しいカラムをレコードの下のテーブルに追加します –