मुझे कॉलम नामों के बारे में निश्चित नहीं है। तो इस उदाहरण में मुझे उम्मीद है कि tbl_ProjectTransaction
projectName
. नामक कॉलम रखने के लिए और tbl_TimeTypeGrouping
एक GroupName
होने के लिए . जैसे किसी ने प्रश्न में टिप्पणी की है, आपको इस मामले में कर्सर का उपयोग नहीं करना चाहिए। आपको एक गतिशील धुरी का उपयोग करना चाहिए। यहाँ और उदाहरण है:
इस तरह के समूहों के नाम प्राप्त करें:
DECLARE @cols VARCHAR(MAX)
SELECT @cols=STUFF
(
(
SELECT
',' +QUOTENAME(tbl_TimeTypeGrouping.sGroupName) -- ????
FROM
tbl_TimeTypeGrouping
FOR XML PATH('')
)
,1,1,'')
यह आपको देगा:
'[Group A],[Group B],[Group C],[Group N]'
और फिर इस तरह एक गतिशील पिवट करें:
DECLARE @query NVARCHAR(4000)=
N'SELECT
*
FROM
(
SELECT
tbl_ProjectTransaction.sProjectName, -- ????
tbl_ProjectTransaction.decNumberOfHours,
tbl_TimeTypeGrouping.sGroupName -- ???
FROM
tbl_ProjectTransaction
JOIN tbl_TimeTypeGrouping
ON tbl_ProjectTransaction.iRefTimeTypeID=tbl_TimeTypeGrouping.iRefTimeTypeID
) AS SourceTable
PIVOT
(
SUM(decNumberOfHours)
FOR GroupName IN ('[email protected]+')
) As Pvt'
EXECUTE(@query)
संदर्भ: