sql >> Database >  >> RDS >> Sqlserver

SQL-cursor in dynamische inhoud

Ik ben niet zeker van de kolomnamen. Dus in dit voorbeeld verwacht ik de tbl_ProjectTransaction om een ​​kolom te hebben met de naam projectName en tbl_TimeTypeGrouping om een ​​GroupName . te hebben . Zoals iemand in de vraag opmerkte, moet je in dit geval geen cursor gebruiken. U moet een dynamische spil gebruiken. Hier is een voorbeeld:

Verkrijg de namen van de groepen als volgt:

DECLARE @cols VARCHAR(MAX)
SELECT @cols=STUFF
(
    (
        SELECT 
            ',' +QUOTENAME(tbl_TimeTypeGrouping.sGroupName) -- ????
        FROM
            tbl_TimeTypeGrouping
        FOR XML PATH('')
    )
,1,1,'')

Dit geeft je:

'[Group A],[Group B],[Group C],[Group N]'

En doe dan een dynamische pivot zoals deze:

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)

Referenties:




  1. Flask:sqlalchemy.exc.ProgrammingError:(psycopg2.ProgrammingError) relatie gebruikers bestaat niet

  2. Opbouwen en onderhouden van een HR-database

  3. Hoe kolommen van ASP.NET Kolomdiagram te spreiden over relevante intervallen van de X-as?

  4. Hoe een afbeelding uit de blob-kolom in Oracle te bekijken met JasperReports?