DECLARE @columns NVARCHAR(MAX);
    DECLARE @sql NVARCHAR(MAX);

    -- 動態生成要顯示的題目欄位
    SELECT @columns = COALESCE(@columns + ', ', '') + QUOTENAME(QUESTION) FROM (
        SELECT  A.LID, A.QUESTION, a.[RANK]
        FROM QUESTIONNAIRE_L A
        --LEFT JOIN QUESTIONNAIRE_UA B ON A.LID = B.LID
        WHERE A.QID = @QID
    ) AS questions
    ORDER BY [RANK];
    
    -- 動態生成 SQL 查詢
    SET @sql = N'
        SELECT ORG_ID, EMP_NO, EMP_NAME, ' + @columns + ', SCORE, CREATION_DATE
        FROM (
            SELECT A.QUESTION, B.EMP_NO, [OPTION].[OPTION], 
                                         (select EMP.ORG_ID from ACCService.dbo.EMP_DATA_ALL EMP where EMP.EMP_NO = B.EMP_NO) ORG_ID,
                                         (select EMP.EMP_NAME from ACCService.dbo.EMP_DATA_ALL EMP where EMP.EMP_NO = B.EMP_NO) EMP_NAME,
                                         (select us.SCORE from QUESTIONNAIRE_US us where us.QID = A.QID and us.EMP_NO = B.EMP_NO) SCORE,
                                         (select max(ua.CREATION_DATE) from QUESTIONNAIRE_UA ua where ua.QID = A.QID) CREATION_DATE
            FROM QUESTIONNAIRE_L A
            LEFT JOIN QUESTIONNAIRE_UA B ON A.LID = B.LID
            LEFT JOIN (select distinct outer_list.LID, outer_list.EMP_NO ,STUFF((select '';'' + inner_list. [OPTION]
                        from QUESTIONNAIRE_UA as inner_list
                       where inner_list.LID = outer_list.LID
                         and inner_list.EMP_NO = outer_list.EMP_NO
                         for xml path('''')),
                      1,
                      1,
                      '''') as [OPTION]
             from QUESTIONNAIRE_UA as outer_list ) [OPTION]  on B.LID = [OPTION].LID and B.EMP_NO = [OPTION].EMP_NO 
            WHERE A.QID = '+ cast(@QID as varchar(50)) + ' 
        ) AS src
        PIVOT (
            MAX([OPTION]) -- 或者使用 SUM、MIN、MAX,根據實際情況
            FOR QUESTION IN (' + @columns + ')
        ) AS pivoted';
        
    -- 執行動態生成的 SQL 查詢
    EXEC sp_executesql @sql;

創作者介紹
創作者 隨手筆記 的頭像
芭樂養樂多

隨手筆記

芭樂養樂多 發表在 痞客邦 留言(0) 人氣( 298 )