使用数据透视表计算列
The use of pivot data to calculate a column
我有一个 PIVOT
SELECT txtSchoolID, intSubjectID, txtPreName, txtSurname, txtForm, [636] AS Effort, [637] AS Focus, [638] AS Participation, [639] AS Groupwork, [640] AS Rigour, [641] AS Curiosity, [642] AS Initiative,
[643] AS SelfOrganisation, [644] as Perserverance
FROM (SELECT txtSchoolID, intSubjectID, intGradeTransposeValue, intGradeID, txtForm, txtPreName, txtSurname FROM VwReportsManagementAcademicReports
WHERE (intReportCycleID = 142) AND (intReportProgress = 1)) p
PIVOT
(AVG (intGradeTransposeValue)
FOR intGradeID IN ([636], [637], [638], [639], [640], [641], [642], [643], [644] )
) AS pvt
我现在需要使用数据透视表中的值来生成额外的列。我想创建一个名为 FocusLH 的列,并使用基于计算的值填充它。计算是 - 如果 Effort+Focus=2 的结果,则在 FocusLH 中分配值 5,如果结果为 3,则分配值 4 等等
这可能吗?
我将 CASE 语句放在了错误的位置,需要使用 intGradeID 而不是别名。这现在有效
SELECT txtSchoolID, intSubjectID, txtPreName, txtSurname, txtForm, [636] AS Effort, [637] AS Focus, [638] AS Participation, [639] AS Groupwork, [640] AS Rigour, [641] AS Curiosity, [642] AS Initiative,
[643] AS SelfOrganisation, [644] as Perserverance,
CASE WHEN [636] + [637] = 2 THEN 5
WHEN [636] + [637] =3 THEN 4
WHEN [636] + [637] =4 THEN 3
WHEN [636] + [637] =5 THEN 2
ELSE NULL END AS FocusLH
FROM (SELECT txtSchoolID, intSubjectID, intGradeTransposeValue, intGradeID, txtForm, txtPreName, txtSurname
FROM VwReportsManagementAcademicReports
WHERE (intReportCycleID = 142) AND (intReportProgress = 1)) p
PIVOT
(MAX (intGradeTransposeValue)
FOR intGradeID IN ([636], [637], [638], [639], [640], [641], [642], [643], [644] )
) AS pvt
我有一个 PIVOT
SELECT txtSchoolID, intSubjectID, txtPreName, txtSurname, txtForm, [636] AS Effort, [637] AS Focus, [638] AS Participation, [639] AS Groupwork, [640] AS Rigour, [641] AS Curiosity, [642] AS Initiative,
[643] AS SelfOrganisation, [644] as Perserverance
FROM (SELECT txtSchoolID, intSubjectID, intGradeTransposeValue, intGradeID, txtForm, txtPreName, txtSurname FROM VwReportsManagementAcademicReports
WHERE (intReportCycleID = 142) AND (intReportProgress = 1)) p
PIVOT
(AVG (intGradeTransposeValue)
FOR intGradeID IN ([636], [637], [638], [639], [640], [641], [642], [643], [644] )
) AS pvt
我现在需要使用数据透视表中的值来生成额外的列。我想创建一个名为 FocusLH 的列,并使用基于计算的值填充它。计算是 - 如果 Effort+Focus=2 的结果,则在 FocusLH 中分配值 5,如果结果为 3,则分配值 4 等等
这可能吗?
我将 CASE 语句放在了错误的位置,需要使用 intGradeID 而不是别名。这现在有效
SELECT txtSchoolID, intSubjectID, txtPreName, txtSurname, txtForm, [636] AS Effort, [637] AS Focus, [638] AS Participation, [639] AS Groupwork, [640] AS Rigour, [641] AS Curiosity, [642] AS Initiative,
[643] AS SelfOrganisation, [644] as Perserverance,
CASE WHEN [636] + [637] = 2 THEN 5
WHEN [636] + [637] =3 THEN 4
WHEN [636] + [637] =4 THEN 3
WHEN [636] + [637] =5 THEN 2
ELSE NULL END AS FocusLH
FROM (SELECT txtSchoolID, intSubjectID, intGradeTransposeValue, intGradeID, txtForm, txtPreName, txtSurname
FROM VwReportsManagementAcademicReports
WHERE (intReportCycleID = 142) AND (intReportProgress = 1)) p
PIVOT
(MAX (intGradeTransposeValue)
FOR intGradeID IN ([636], [637], [638], [639], [640], [641], [642], [643], [644] )
) AS pvt