我有一个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等等
这可能吗?
答案 0 :(得分:0)
我将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