我有一个应用程序,我需要对在满足标准条件的一段时间内生产的不合规格产品进行求和(总计)。解释这一点的最简单方法是举个例子。
数据存在于一个表t_data中,其列:
- tagId (Nvarchar)
- timeStamp (Datetime)
- valueFloat (Float)
要总计的值的 tagId 是myVal,标准值是myCrit。当myCrit小于 10时,我想知道myVal的总值。
tagId | timeStamp | valueFloat | (comment)
---------+-------------+--------------+--------------
myCrit | 08:01:00 | 12.0 | myCrit starts good - no totalizing yet
myVal | 08:01:00 | 10.0 |
myCrit | 08:02:00 | 9.0 | myCrit goes bad take next myval as "start"
myVal | 08:03:00 | 15.0 | start
myCrit | 08:04:00 | 8.5 |
myVal | 08:05:00 | 16.0 |
myVal | 08:06:00 | 20.0 | end (20-15 totalized)
myCrit | 08:07:00 | 10.5 | myCrit is good take prev. myVal as "end"
myVal | 08:08:00 | 25.0 |
myCrit | 08:09:00 | 9.0 | myCrit bad take next myVal as "start"
myVal | 08:10:00 | 30.0 | start
myVal | 08:11:00 | 40.0 | end (40-30 totalized)
myCrit | 08:12:00 | 11.0 | myCrit good, take prev. myVal as "end"
查询显示的数据范围的合计值应为 (20-15 + 40-30) = 15。
所以总而言之,我想在时间段的开始和结束时添加 myVal 的差异。段的开始和结束由 myCrit 更改为好值或坏值来标记。如何使用存储过程来做到这一点?