YP
は簡単に分割できます LEFT()
を使用した文字列 、 RIGHT()
, SUBSTRING()
など。私の提案は、UNPIVOT
の処理方法です。 . UNPIVOT
する列がたくさんあるようです したがって、このクエリを実行するために動的 SQL を実装することをお勧めします。このようにします:
declare @colsUnpivot varchar(max), @query AS NVARCHAR(MAX), @cols varchar(max)select @colsUnpivot =stuff((select ',' +quotename(replace(C.name, 'Qty) ', '')) from sys.columns as C where C.object_id =object_id('yourtable') and C.name like 'Qty%' for xml path('')), 1, 1, '')select @ cols =stuff((select ',' +quotename(C.name) + ' as ' + replace(C.name, 'Qty', '') from sys.columns as C where C.object_id =object_id('yourtable' ) および C.name like 'Qty%' for xml path('')), 1, 1, '')set @query ='select rowid, left(YP, 1) YP, cast(right(YP, len( YP) - 1) as int) period, Val from ( select rowid, ' + @cols + ' from yourtable ) x1 unpivot ( val for YP IN (' + @colsUnpivot + ') ) u'exec(@query)コード> プレ> SQL Fiddle with Demo
を参照してください