Você pode facilmente dividir o
YP
string usando LEFT()
, RIGHT()
, SUBSTRING()
, etc. Minha sugestão seria como você está lidando com seu UNPIVOT
. Parece que você tem muitas colunas para UNPIVOT
então minha sugestão pode ser implementar SQL dinâmico para realizar essa consulta. Você faria assim: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') and
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)