SQL:使用 IIF 的 CTE

SQL: CTE using IIF

我要解决的问题:

Write a CTE with a SELECT statement that returns one row for each student that has courses with these columns:

Write a SELECT statement that uses this CTE to return these columns for each student:

我是什么运行:

WITH UnitsSummary AS (
SELECT Students.StudentID,SUM(CourseUnits) AS TotalUnits
FROM Students JOIN StudentCourses ON Students.StudentID = StudentCourses.StudentID
JOIN Courses ON StudentCourses.CourseID = Courses.CourseID
GROUP BY Students.StudentID,CourseUnits
)

SELECT StudentID, TotalUnits, IIF( SUM (TotalUnits) >9,'FUlltime','Parttime'),FullTimeCost + (TotalUnits * PerUnitCost) AS Tuition
FROM UnitsSummary CROSS JOIN Tuition

我的错误信息:

Msg 8120, Level 16, State 1, Line 8 Column 'UnitsSummary.StudentID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

您不需要再sum(TotalUnits)。每当您使用聚合函数时,您都必须执行 group by 非聚合字段。尝试以下

SELECT 
    StudentID, 
    TotalUnits, 
    IIF(TotalUnits > 9,'FUlltime','Parttime'),
    FullTimeCost + (TotalUnits * PerUnitCost) AS Tuition
FROM UnitsSummary 
CROSS JOIN Tuition