SQL,剔除连续编号记录值最小的行

fengguos 2015-10-30 08:50:25
要剔除连续编号记录值最小的行,然后根据姓名分组求和,怎么弄呢
编号 姓名 金额
1 张三 100
2 张三 120
7 李四 500
8 李四 50
9 李四 100
.... ........ ....

我要剔除1、张三、100; 和 7、李四、500
...全文
59 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2015-10-30
  • 打赏
  • 举报
回复
更正下注释:-- 前一条姓名相同(不是连续编号的最小行)
Tiger_Zhao 2015-10-30
  • 打赏
  • 举报
回复
/* 测试数据
WITH table1(编号,姓名,金额)AS(
SELECT 1,'张三',100 UNION ALL
SELECT 2,'张三',120 UNION ALL
SELECT 7,'李四',500 UNION ALL
SELECT 8,'李四',50 UNION ALL
SELECT 9,'李四',100 UNION ALL
SELECT 10,'王五',150
)*/
SELECT *
FROM table1 t1
WHERE EXISTS( -- 前一条姓名相同(最小行)
SELECT *
FROM table1 t0
WHERE t0.编号 = t1.编号 - 1
AND t0.姓名 = t1.姓名)
/* 如果要包括非连续编号,加上下面的条件 */
OR NOT EXISTS( -- 下一条姓名不同(连续编号的最后一条、非连续编号)
SELECT *
FROM table1 t2
WHERE t2.编号 = t1.编号 + 1
AND t2.姓名 = t1.姓名)
ORDER BY 编号

       编号 姓名        金额
----------- ---- -----------
2 张三 120
8 李四 50
9 李四 100
10 王五 150

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧