आप आसानी से 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') 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)