sql >> Databasteknik >  >> RDS >> Sqlserver

SQL-markör i dynamiskt innehåll

Jag är inte säker på kolumnnamnen. Så i det här exemplet förväntar jag mig tbl_ProjectTransaction att ha en kolumn som heter projectName och tbl_TimeTypeGrouping att ha ett GroupName . Liksom någon ställt in i frågan bör du inte använda en markör i det här fallet. Du bör använda en dynamisk pivot. Här är ett exempel:

Få namnen på grupperna så här:

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

Detta ger dig:

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

Och gör sedan en dynamisk pivot så här:

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)

Referenser:




  1. Hur man skapar unika begränsningar för flera kolumner i SQL Server - SQL Server / TSQL självstudie del 96

  2. MySQL, CONCAT, resultatet är null efter ett tag

  3. TRIGGERS som gör att INSERT misslyckas? Möjlig?

  4. Hur laddar man upp lång blob (bild) till mysql-databasen med java och hämtar i php?