将列值拆分为多个列值(生成学生出勤报告)

时间:2014-04-11 05:33:28

标签: mysql sql

我想将数据拆分为多个列并更改列名,并根据学生出勤的拆分数据创建百分比。 现在我在db中的表被打了......

----------------------------------------------------
StudentID | 11-4-2014 |12-4-2014|13-4-2014|14-4-2014
----------------------------------------------------
1             AA         AP         PP       PA
----------------------------------------------------
2             PP         AA         PP       AP
----------------------------------------------------

这里A代表缺席,P代表现在。该AA用于Forenoon出勤和下午出勤。我们需要像这样分开..

根据日期和学生显示出勤率 在这里我使用了studentid作为1和11-4-2014

StudentID | Forenoon | Afternoon | Percentage 
---------------------------------------------
1              A          A           0%
--------------------------------------------
2              P          P          100%
-------------------------------------------

它应该基于......到...日期。 如果从2014年4月11日到2014年4月13日,我们需要根据日期计算百分比。

提前致谢..

1 个答案:

答案 0 :(得分:0)

要回答您的问题,请参阅下面的

CREATE TABLE student (studentid INTEGER , attendanceDate VARCHAR(20));

我创建了一个表并在表

中的数据下面插入
studentid  attendanceDate
---------  --------------
        1  AA            
        2  AP            
        3  PA            
        4  PP 

如果您将运行以下查询,您将获得所需的输出

SELECT T.studentid ,T.foreNoon,T.afterNoon, IF(T.forenoon=T.afternoon && T.forenoon ='A', '100%' ,
    IF(T.forenoon=T.afternoon && T.forenoon ='P' , '0%' ,'50%'))     AS percentage
 FROM (
 SELECT studentid, SUBSTRING(attendanceDate,1,1) AS foreNoon,SUBSTRING(attendanceDate,2,1) AS afterNoon  FROM student )T

如果您运行上述查询,您将获得如下所示的输出

studentid  foreNoon  afterNoon  percentage
---------  --------  ---------  ----------
    1  A         A          100%      
    2  A         P          50%       
    3  P         A          50%       
    4  P         P          0%        

使用MYSQL的substring方法将解决问题