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

weixin_39859477 2017-08-15 06:02:05


两个连续相同的红框中的单价只取一个,结果希望得到的数据就是取出绿框中的数据。
谢谢,非常感谢!!!
...全文
355 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2017-08-16
  • 打赏
  • 举报
回复
看看这个可以吗
--测试数据
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 )


二月十六 2017-08-15
  • 打赏
  • 举报
回复
引用 4 楼 weixin_39859477 的回复:
非常感谢一楼的大神!
记得结贴哦
weixin_39859477 2017-08-15
  • 打赏
  • 举报
回复
非常感谢一楼的大神!
卖水果的net 2017-08-15
  • 打赏
  • 举报
回复
忽略 2 #,回答有问题。
卖水果的net 2017-08-15
  • 打赏
  • 举报
回复
with m as( select *, row_number() over(partition by code, price order by um) rn from t ) select * from m where rn = 1
二月十六 2017-08-15
  • 打赏
  • 举报
回复
--测试数据
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 )



590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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