Je ne suis pas sûr des noms de colonnes. Donc, dans cet exemple, j'attends le tbl_ProjectTransaction
pour avoir une colonne appelée projectName
et tbl_TimeTypeGrouping
avoir un GroupName
. Comme quelqu'un a commenté dans la question, vous ne devez pas utiliser de curseur dans ce cas. Vous devez utiliser un pivot dynamique. Voici un exemple :
Obtenez les noms des groupes comme ceci :
DECLARE @cols VARCHAR(MAX)
SELECT @cols=STUFF
(
(
SELECT
',' +QUOTENAME(tbl_TimeTypeGrouping.sGroupName) -- ????
FROM
tbl_TimeTypeGrouping
FOR XML PATH('')
)
,1,1,'')
Cela vous donnera :
'[Group A],[Group B],[Group C],[Group N]'
Et faites ensuite un pivot dynamique comme celui-ci :
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)
Références :