热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

两条连续相同的数据只取一条

两个连续相同的红框中的单价只取一个,结果希望得到的数据就是取出绿框中的数据。谢谢,非常感谢!!!


两个连续相同的红框中的单价只取一个,结果希望得到的数据就是取出绿框中的数据。
谢谢,非常感谢!!!

6 个解决方案

#1


--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([Code] NVARCHAR(100),[Price]  NVARCHAR(100),[Number] int)
Insert #T
select '661001','6100',1 union all
select '661001','6100',2 union all
select '661001','6000',3 union all
select '661001','6100',4 union all
select '661002','6000',5 union all
select '661008','6000',6 union all
select '661001','6000',7 union all
select '661002','6000',8
Go
--测试数据结束
;WITH cte AS (
Select *,Number-ROW_NUMBER()OVER(ORDER BY Price) AS rn from #T 
)
SELECT  *
FROM    #T
WHERE   Number IN ( SELECT  MIN(Number) AS Number
                    FROM    cte
                    GROUP BY rn )



#2


with m as(
select *, row_number() over(partition by code, price order by um) rn
from t
)
select * from m where rn = 1

#3


忽略 2 #,回答有问题。

#4


非常感谢一楼的大神!

#5


引用 4 楼 weixin_39859477 的回复:
非常感谢一楼的大神!

记得结贴哦

#6


看看这个可以吗
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([CustomerCode] NVARCHAR(100),[SlipDate]  NVARCHAR(100),[UnitPrice] decimal(18,8),[Number] int)
Insert #T
select '661001','2017-06-23',2000.00,1 union all
select '661001','2017-06-02',2300.00,2 union all
select '661001','2017-05-31',2100.00,3 union all
select '661001','2017-05-26',2300.00,4 union all
select '661001','2017-05-22',2300.00,5 union all
select '661001','2017-05-13',2300.00,6 union all
select '661001','2017-05-13',2300.00,7 union all
select '661001','2017-05-12',2300.00,8 union all
select '661001','2017-02-07',2800.00,9 union all
select '661001','2017-02-04',2800.00,10 union all
select '661001','2016-12-22',2500.00,11 union all
select '661001','2016-12-10',2800.00,12 union all
select '661001','2016-12-06',2500.00,13 union all
select '661001','2016-11-15',2500.00,14 union all
select '661001','2016-08-22',2000.00,15
Go
--测试数据结束
;WITH cte AS (
Select *,Number-ROW_NUMBER()OVER(PARTITION BY UnitPrice ORDER BY [UnitPrice]) AS rn from #T 
)
SELECT  *
FROM    #T
WHERE   Number IN ( SELECT  MIN(Number) AS Number
                    FROM    cte
                    GROUP BY rn )



推荐阅读
author-avatar
淅沥的雨的海角_960
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有