わからないLINQ
ので、SQL Server ストアド プロシージャで使用できるバージョンを提供します。このタイプのデータ変換は、PIVOT
. SQL Server 2008+を使用しているため、関数を使用できます。
変換する値がわかっている場合は、値をハードコーディングできます。
SELECT nodeid, rowid,[FirstName], [LastName], [Title]
FROM
(
SELECT nodeid, rowid, name, value
FROM yourTable
) x
PIVOT
(
max(value)
for name in ([FirstName], [LastName], [Title])
)p
デモで SQL Fiddle を参照してください
次に、値の数が不明な場合は、動的 SQL を実装できます。
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(name)
from yourtable
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT nodeid, rowid,' + @cols + ' from
(
SELECT nodeid, rowid, name, value
FROM yourTable
) x
pivot
(
max(value)
for name in (' + @cols + ')
) p '
execute(@query)
デモで SQL Fiddle を参照してください
どちらも結果を返します。
| NODEID | ROWID | FIRSTNAME | LASTNAME | TITLE |
--------------------------------------------------
| 1 | 1 | Alfred | Beagle | (null) |
| 1 | 2 | Freddy | (null) | (null) |
| 1 | 3 | (null) | Grey | Sir. |