在图像上方,我已示出的表结构我使用学生的结果存储到多个行组合成单排。不过,我需要选择这样的数据,使得取决于特定的FEID(检查ID), 我获得了单个学生的标记和单个学生的子ID。类似下面:
FEID SubID1 MarksObtained SubID2 MarksObtained SubID3 MarksObtained StdID
2 1 0 2 0 3 0 50
2 1 45 2 45 3 45 51
结果栏不会影响结果为特定stdID和FEID它仍然同样为无论多少子ID怎么在那里。 基本上,我将每个主题标记存储在单个行中,主题可以是任何数字(在这种情况下超过3个),这在手前是未知的。但对于每个我创建一行来输入其标记
我试过下面的sytax。
DECLARE @cols nvarchar(MAX);
--get the list of subids from the table
SELECT @cols = SubjectName from tbSubjects where SubID IN(select distinct SubID from tbFinalMarks);
Declare @sql nvarchar(MAX) = 'SELECT StdId, FEID, ' + @cols + 'FROM
(
SELECT * FROM tbFinalMarks
)t
PIVOT
(
MAX(MarksObtained) FOR SubId IN (' + @cols + ')
)p';
您需要使用数据透视表来执行此操作。 – pquest
我从来没有使用数据透视表。是否有任何我可以查找相同的参考 –
我将添加一个答案,显示一个例子 – pquest