Bạn có thể dễ dàng tách YP
chuỗi sử dụng LEFT()
, RIGHT()
, SUBSTRING()
, v.v. Đề xuất của tôi sẽ là cách bạn xử lý UNPIVOT
của mình . Có vẻ như bạn có nhiều cột để UNPIVOT
vì vậy đề xuất của tôi có thể là triển khai SQL động để thực hiện truy vấn này. Bạn sẽ làm theo cách này:
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)