如何从表中转义一个或多个连续行,inoutMode为1或0

时间:2017-10-31 15:01:39

标签: sql sql-server tsql sql-server-2012

我有一张表My table,结果如下:

Id      EmpCode        CheckInCheckOutDate     WorkDate     InOutMode
85223   175 2017-10-27 11:20:39.000 2017-10-27 11:20:39.000 0
85832   175 2017-10-27 14:21:21.000 2017-10-27 14:21:21.000 1
85844   175 2017-10-27 14:36:23.000 2017-10-27 14:36:23.000 0
85863   175 2017-10-27 15:21:27.000 2017-10-27 15:21:27.000 1
85878   175 2017-10-27 16:03:46.000 2017-10-27 16:03:46.000 0
86031   175 2017-10-27 18:14:41.000 2017-10-27 18:14:41.000 1
86038   175 2017-10-27 18:34:45.000 2017-10-27 18:34:45.000 0
**86039 175 27.10.2017 18:34:46.000 27.10.2017 18:34:46.000 1
86142   175 2017-10-27 19:51:15.000 2017-10-27 19:51:15.000 1**
86162   175 2017-10-27 20:25:44.000 2017-10-27 20:25:44.000 0
86170   175 2017-10-27 20:31:58.000 2017-10-27 20:31:58.000 1

我希望得到如下结果:(在转义连续行的“InOutMode”列中具有相同值的一个连续行之后0或1条件基于workdate, 示例:id是'86039'和'86142'行,我们在最后一列中有相同的值'1'所以我想首先删除 行,并希望只有旧行。)

85223   175 2017-10-27 11:20:39.000 2017-10-27 11:20:39.000 0
85832   175 2017-10-27 14:21:21.000 2017-10-27 14:21:21.000 1
85844   175 2017-10-27 14:36:23.000 2017-10-27 14:36:23.000 0
85863   175 2017-10-27 15:21:27.000 2017-10-27 15:21:27.000 1
85878   175 2017-10-27 16:03:46.000 2017-10-27 16:03:46.000 0
86031   175 2017-10-27 18:14:41.000 2017-10-27 18:14:41.000 1
86038   175 2017-10-27 18:34:45.000 2017-10-27 18:34:45.000 0
86142   175 2017-10-27 19:51:15.000 2017-10-27 19:51:15.000 1
86162   175 2017-10-27 20:25:44.000 2017-10-27 20:25:44.000 0
86170   175 2017-10-27 20:31:58.000 2017-10-27 20:31:58.000 1

1 个答案:

答案 0 :(得分:1)

您可以使用窗口函数:

let shareLocationSwitch = UISwitch()
cell.accessoryView = shareLocationSwitch

<强> Rextester Demo

中间结果来说明想法(触发器):

enter image description here

如果您需要,可以添加更多分区(例如按天)。