SQL删除具有相同值的所有连续记录,仅保留第一个和最后一个

00110001

我有一种情况,我需要删除共享相同字段值的连续记录(“无法通知客户”),但是我需要离开第一个和最后一个实例

样本数据

date             type    log
20/11/2014 09:05 System, Order Added
20/11/2014 09:18 Mark,   Invoice Printed
20/11/2014 10:00 System, Failed to notify Customer
20/11/2014 10:05 System, Failed to notify Customer
20/11/2014 10:10 System, Failed to notify Customer
20/11/2014 10:15 System, Failed to notify Customer
20/11/2014 10:20 System, Failed to notify Customer
20/11/2014 12:05 System, Order Completed

结果输出

date             type    log
20/11/2014 09:05 System, Order Added
20/11/2014 09:18 Mark,   Invoice Printed
20/11/2014 10:00 System, Failed to notify Customer
20/11/2014 10:20 System, Failed to notify Customer
20/11/2014 12:05 System, Order Completed

有某种公式化sql服务器查询以实现此目的的方法吗?对于我的一生,我无法理解如何处理这个问题

菲利克斯·帕米坦(Felix Pamittan)

试试这个:

样本数据 :

use tempdb

create table temp(
    [date]  datetime,
    type    varchar(100),
    [log]   varchar(100)
)
insert into temp values
('11/20/2014 09:05', 'System', 'Order Added'),
('11/20/2014 09:18', 'Mark', 'Invoice Printed'),
('11/20/2014 10:00', 'System', 'Failed to notify Customer'),
('11/20/2014 10:05', 'System', 'Failed to notify Customer'),
('11/20/2014 10:10', 'System', 'Failed to notify Customer'),
('11/20/2014 10:15', 'System', 'Failed to notify Customer'),
('11/20/2014 10:20', 'System', 'Failed to notify Customer'),
('11/20/2014 12:05', 'System', 'Order Completed');

解决方案使用ROW_NUMBER()

with cte as(
    select
        *,
        rn = row_number() over(partition by log order by [date]),
        cc = count(*) over(partition by log)
    from temp
    where
        log = 'Failed to notify Customer'
)
delete
from cte
where
    rn > 1 and rn < cc

select * from temp
drop table temp

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在詹金斯中是否有可能在连续失败的“一行”中仅保留第一个和最后一个失败?

来自分类Dev

删除相同的值,但第一个和最后一个除外

来自分类Dev

如何用jsoup选择除第一个和最后一个以外的所有子项(具有相同标签的ex.table)

来自分类Dev

在一行中查找具有特定值的第一个和最后一个条目

来自分类Dev

Perl单词元音消除:删除除第一个和最后一个以外的所有元音

来自分类Dev

python csv,删除所有逗号,但每行的第一个和最后一个

来自分类Dev

jQuery删除除第一个和最后一个数字外的所有数字

来自分类Dev

将表中单击相同行的所有单元格值均装入数组,但第一个和最后一个<td>

来自分类Dev

删除具有相同值的最后一个插入记录

来自分类Dev

删除具有相同值的最后一个插入记录

来自分类Dev

awk在逗号分隔的字段上仅保留第一个和最后一个值

来自分类Dev

如何删除具有相同整体的数字并保留列表中的第一个出现的数字?

来自分类Dev

sql-当我得到2个或更多具有相同值的值时,仅更新1(第一个查询找到)值的方法?

来自分类Dev

对具有特定列的文件进行排序和唯一化,并且仅保留给定文件中的第一个值

来自分类Dev

C ++:我有两个数组,其中第一个元素和最后一个元素具有相同的内存地址

来自分类Dev

删除第一个和最后一个出现列值的行

来自分类Dev

为什么代码仅匹配第一个和最后一个匹配而不匹配所有匹配?

来自分类Dev

TSQL XML值返回所有记录的节点的第一个值

来自分类Dev

TSQL XML值返回所有记录的节点的第一个值

来自分类Dev

删除所有具有相同class属性但保留一个元素的元素

来自分类Dev

检查最后一个(或第一个)节点的子节点是否具有特定值

来自分类Dev

使用Stringr选择所有中间单词,而忽略第一个和最后一个单词

来自分类Dev

RegExp 替换所有字母但不是第一个和最后一个

来自分类Dev

在具有匹配属性的列表中查找第一个和最后一个列表

来自分类Dev

通过JS检测div的第一个和最后一个孩子是否具有类更改

来自分类Dev

在 CSS 中选择具有特定类的序列的第一个和最后一个元素

来自分类Dev

比较两个数组后,仅删除第一个重复值和所有其他匹配值

来自分类Dev

正则表达式:删除除第一个字符和最后一个数字以外的所有字符

来自分类Dev

SED或AWK删除第一个破折号之前和最后一个破折号之后的所有内容

Related 相关文章

  1. 1

    在詹金斯中是否有可能在连续失败的“一行”中仅保留第一个和最后一个失败?

  2. 2

    删除相同的值,但第一个和最后一个除外

  3. 3

    如何用jsoup选择除第一个和最后一个以外的所有子项(具有相同标签的ex.table)

  4. 4

    在一行中查找具有特定值的第一个和最后一个条目

  5. 5

    Perl单词元音消除:删除除第一个和最后一个以外的所有元音

  6. 6

    python csv,删除所有逗号,但每行的第一个和最后一个

  7. 7

    jQuery删除除第一个和最后一个数字外的所有数字

  8. 8

    将表中单击相同行的所有单元格值均装入数组,但第一个和最后一个<td>

  9. 9

    删除具有相同值的最后一个插入记录

  10. 10

    删除具有相同值的最后一个插入记录

  11. 11

    awk在逗号分隔的字段上仅保留第一个和最后一个值

  12. 12

    如何删除具有相同整体的数字并保留列表中的第一个出现的数字?

  13. 13

    sql-当我得到2个或更多具有相同值的值时,仅更新1(第一个查询找到)值的方法?

  14. 14

    对具有特定列的文件进行排序和唯一化,并且仅保留给定文件中的第一个值

  15. 15

    C ++:我有两个数组,其中第一个元素和最后一个元素具有相同的内存地址

  16. 16

    删除第一个和最后一个出现列值的行

  17. 17

    为什么代码仅匹配第一个和最后一个匹配而不匹配所有匹配?

  18. 18

    TSQL XML值返回所有记录的节点的第一个值

  19. 19

    TSQL XML值返回所有记录的节点的第一个值

  20. 20

    删除所有具有相同class属性但保留一个元素的元素

  21. 21

    检查最后一个(或第一个)节点的子节点是否具有特定值

  22. 22

    使用Stringr选择所有中间单词,而忽略第一个和最后一个单词

  23. 23

    RegExp 替换所有字母但不是第一个和最后一个

  24. 24

    在具有匹配属性的列表中查找第一个和最后一个列表

  25. 25

    通过JS检测div的第一个和最后一个孩子是否具有类更改

  26. 26

    在 CSS 中选择具有特定类的序列的第一个和最后一个元素

  27. 27

    比较两个数组后,仅删除第一个重复值和所有其他匹配值

  28. 28

    正则表达式:删除除第一个字符和最后一个数字以外的所有字符

  29. 29

    SED或AWK删除第一个破折号之前和最后一个破折号之后的所有内容

热门标签

归档