sql >> データベース >  >> RDS >> Sqlserver

動的コンテンツの SQL カーソル

    列名についてはわかりません。したがって、この例では 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)
    

    参照:




    1. SQLを使用してこの日付をテーブルに入力できないのはなぜですか?

    2. 既存のテーブルの 7000 レコードから上位 1000 レコードを他の新しいテーブルにコピーする方法

    3. PostgreSQLでSSLを有効にする方法

    4. PLS-00103動的SQLを使用した外部テーブルの作成