row_number()
を適用する以下を使用できます 記録へ:
select DateTimeID, [1] as Wavelength1, [2] as Wavelength2, SensorIdfrom( select [DateTimeID], [Wavelength], [SensorID], row_number() over(DateTimeID で分割, SensorId は DateTimeID 順) rn from yourtable) srcpivot( max(Wavelength) for rn in ([1], [2])) piv
プレ>SQL Fiddle with Demo を参照してください。 .
波長
の数が不明な場合 値の場合、動的 SQL を使用してこれを生成できます:DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX)select @cols =STUFF((SELECT distinct ',' + QUOTENAME('Wavelength'+cast(rn as varchar(50))) ) from ( select row_number() over(DateTimeID によるパーティション、DateTimeID による SensorId の順序) rn from yourtable ) src FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1, 1,'')set @query ='SELECT DateTimeID,' + @cols + ', SensorId from ( select [DateTimeID], [Wavelength], [SensorID], ''Wavelength''+cast(row_number() over(partition) DateTimeID による、SensorId による DateTimeID による順序) as varchar(50)) rn from yourtable ) x pivot ( max(Wavelength) for rn in (' + @cols + ') ) p 'execute(@query) プレ>
デモによる SQL Fiddle を参照してください。