我需要你对这个问题的专业知识。我有一个车辆/驾驶员检查数据库,我试图创建一个交通违规点系统,这是一个系统,当司机犯下某些交通违规行为时,他们会招致违规驾驶点。
系统:将在一个人的最后12个月内发生的违规点加在一起计算点总数。如果累计积分达到14点,则暂停点数将被取消,或者在暂停服务后减去14点。
示例:
进攻日期 - 分数
说明:
2014年4月25日发生了两起违规事件(2013年8月6日 - 2014年4月25日)累积了14分(6 + 4 + 4),暂停执行,然后取消了14分。 2014年4月25日的第2次进攻将结转并添加至2014年5月8日积分(共4分)。
以下是数据库表:
tbl_Driver
tbl_Event
tbl_EventViolation
tbl_Violation
tbl_ViolationClass
我制作了一个SQL代码,但只对累计分数求和,而不是整个条件。见下文:
SELECT a.DriverId,
a.DriverLicense,
a.FirstName + ' ' + a.LastName as DriverName,
a.FirstName,
a.LastName,
a.DriverMobileNo1,
a.Notes,
SUM(a.Points) as TotalPoints
FROM
(
SELECT dbo.Event.EventTime,
dbo.Drivers.DriverID,
dbo.Drivers.DriverLicense,
dbo.Drivers.FirstName,
dbo.Drivers.LastName,
dbo.Drivers.DriverMobileNo1,
dbo.Violation.ViolationName,
dbo.Violation.Points,
dbo.Drivers.Notes
FROM dbo.Drivers INNER JOIN dbo.Event ON dbo.Drivers.DriverId = dbo.Event.DriverId INNER JOIN
dbo.EventViolation ON dbo.Event.EventId = dbo.EventViolation.EventId INNER JOIN
dbo.Violation ON dbo.EventViolation.ViolationId = dbo.Violation.ViolationId INNER JOIN
dbo.ViolationClass ON dbo.Violation.ViolationClassId = dbo.ViolationClass.ViolationClassID
WHERE dbo.EventViolation.Status = 2
AND dbo.ViolationClass.ClassName Like 'C'
AND dbo.Violation.ViolationName Not Like 'LOAD NOT CORRECTLY RESTRAINED'
AND dbo.Violation.ViolationName Not Like 'DRIVING WITHOUT UAE LICENSE'
) as a
GROUP BY a.DriverId, a.DriverLicense, a.FirstName, a.LastName, a.DriverMobileNo1, a.Notes
ORDER BY Points desc
请任何人尝试修改代码以适应上面设置的条件
感谢您的时间。期待解决方案。