首页 > 解决方案 > 使用数据透视表显示学生出勤率

问题描述

我正在使用 SQL 'Pivot' 每月显示学生出勤率,但面对Error Invalid column name 'DayValue'. Invalid column name 'Stu_Status'.

M 使用以下 SQL 查询

Select 
       StudentID, Stu_Status, DAY([AttandanceDate]) as [DayValue] 
  From tbl_Students_Attandance as studAttd
 PIVOT (Max([Stu_Status])
   FOR [DayValue] IN ([1], [2], [3], [4],[5], [6], [7], [8], [9],
       [10],  [11], [12], [13], [14],[15], [16], [17], [18], [19],
       [20], [21], [22], [23], [24],[25], [26], [27], [28], [29],[30])
       ) AS Piviottable;

使用下表设计

SQL 表设计图像

达到以下结果 所需的结果图片

标签: sqlsql-server

解决方案


您可以改用条件聚合:

select StudentID, max(case when day(AttandanceDate) = 1 then Stu_Status end) as [1],
       . . . 
from  tbl_Students_Attandance as studAttd
group by StudentID;

但是,我怀疑这也需要提及year()以匹配当前yearmonth出勤率。


推荐阅读