【发布时间】:2014-09-05 19:42:00
【问题描述】:
我有一个 SQL 查询,它返回对一台设备的一组检查,其中有一列指示对记录集表示的设备进行维修的日期。如果在检查时未进行修复,则该字段为 NULL。有问题的设备将在其生命周期内多次维修。
我想查找查询中的记录子集,这些记录的子集在每条记录之后具有最小 InspectionDate,修复日期为非 NULL,RepairDate 字段中的值为 NULL。
例如:
InspectionDate ReprairDate OtherData
1/1/2010 NULL ...
2/1/2010 NULL ...
2/15/2010 2/15/2010 ...
3/1/2010 NULL ...
4/1/2010 NULL ...
5/1/2010 5/1/2010 ...
6/1/2010 6/1/2010 ...
7/1/2010 NULL ...
应该配对到:
InspectionDate ReprairDate OtherData
1/1/2010 NULL ...
3/1/2010 NULL ...
7/1/2010 NULL ...
我知道使用光标这将是一件相当微不足道的事情,但我试图避免使用它们,并且觉得这可以通过 PARTION、OVER 和 GROUP BY 的某种组合来完成,但我没有偶然发现了正确的组合。
【问题讨论】:
标签: sql sql-server group-by sql-server-2012 partition