在SQL中查找连续值

时间:2015-04-24 16:32:28

标签: sql

我想找出每个学生每个模块的连续缺席, 这是我原来的结果。

enter image description here

我希望我的输出是添加一个连续缺席列,并按模块找出每个学生的连续缺席。

enter image description here

1 个答案:

答案 0 :(得分:0)

试试这样。

DECLARE @Tbl TABLE
(
    [Id] [int] IDENTITY(1,1),
    [Studentcode] VARCHAR(50),
    [Semester] VARCHAR(50),
    [ModuleCode] VARCHAR(50),
    [Date] VARCHAR(50),
    [WkNo] VARCHAR(50),
    [Attended] VARCHAR(50),
    [Absent] [int]
)

INSERT INTO @Tbl
SELECT [Studentcode]
      ,[Semester]
      ,[ModuleCode]
      ,[Date]
      ,[WkNo]
      ,[Attended]
      ,[Absent] FROM Attendance
ORDER BY studentcode,modulecode,date

SELECT T1.*, CASE WHEN (T1.Absent = 1 AND T2.Absent = 1)
                        AND (T1.ModuleCode = T2.ModuleCode) 
             THEN 1 ELSE 0 END AS CosecutiveAbsence
FROM @Tbl T1 
LEFT OUTER JOIN @Tbl T2 
ON T1.Id = T2.Id + 1