2014-12-03 45 views
-1

这里如何编写动态列创建的SELECT语句在哪里Condtion在这里,我想选择下面提到如何编写WHERE条件在枢轴

DECLARE @cols NVARCHAR(2000); 
    SELECT @cols = STUFF((SELECT DISTINCT TOP 100 PERCENT 
            '],[' + t2.PartID 
          FROM StudentAnswer AS t2 
          ORDER BY '],[' + t2.PartID 
          FOR XML PATH('') 
         ), 1, 2, '') + ']' 

    DECLARE @Query NVARCHAR(4000); 
    SET @Query= N' SELECT ExamID,StudentID,'[email protected]+' 
    FROM 
    (SELECT StudentID,PartID,ExamID 
         , CASE WHEN Ans=CorrectAns THEN 1 WHEN Ans!=CorrectAns THEN 0 END as Result 
       FROM StudentAnswer **//Where Condtion** 
      ) p 
      PIVOT (SUM(Result) 
         FOR PartID 
          IN ('[email protected]+') 
        ) AS pvt;' 
    EXECUTE(@Query); 

回答

0

我得到使用此回答..

DECLARE @cols NVARCHAR(2000); 
    SELECT @cols = STUFF((SELECT DISTINCT TOP 100 PERCENT 
            '],[' + t2.PartID 
          FROM StudentAnswer AS t2 
          ORDER BY '],[' + t2.PartID 
          FOR XML PATH('') 
         ), 1, 2, '') + ']' 

    DECLARE @Query NVARCHAR(4000); 
    SET @Query= N' SELECT ExamID,StudentID,'[email protected]+' 
    FROM 
    (SELECT StudentID,PartID,ExamID 
         , CASE WHEN Ans=CorrectAns THEN 1 WHEN Ans!=CorrectAns THEN 0 END as Result 
       FROM StudentAnswer WHERE ExamID=''EX201411E1''**// Here Use the tow single Qutation**`` 
      ) p 
      PIVOT (SUM(Result) 
         FOR PartID 
          IN ('[email protected]+') 
        )AS pvt;'      
    EXECUTE(@Query); 
0

只是简单地做只特殊考试ID位置 .. ......

DECLARE @cols NVARCHAR(2000); 
SELECT @cols = STUFF((SELECT DISTINCT TOP 100 PERCENT 
           '],[' + t2.PartID 
         FROM StudentAnswer AS t2 
         ORDER BY '],[' + t2.PartID 
         FOR XML PATH('') 
        ), 1, 2, '') + ']' 

DECLARE @Query NVARCHAR(4000); 
SET @Query= N' SELECT ExamID,StudentID,'[email protected]+' 
FROM 
(SELECT StudentID,PartID,ExamID 
        , CASE WHEN Ans=CorrectAns THEN 1 WHEN Ans!=CorrectAns THEN 0 END as Result 
      FROM StudentAnswer Where ExamID = yourExamID 
     ) p 
     PIVOT (SUM(Result) 
        FOR PartID 
         IN ('[email protected]+') 
       ) AS pvt;' 
EXECUTE(@Query); 

如果您有任何问题与请注明还包括你的问题的更多细节以及输出......