一不知该咋整的查询,请赐教

benliliu 2007-09-30 10:25:49
一张表如下:
ID SIZE COLOR CUT PRICE SEQUENCE
1 1 1 R 0.8 1
2 1 1 PR 0.7 2
3 1 1 Y 0.6 3
4 2 2 M 0.6 4
5 1 1 U 0.75 5
6 2 2 N 0.5 6
现在我想查出size,color属性相同但CUT属性不同,且SEQUENCE比前面大,但是PRICE比前面小的一对ID(每条记录都只找满足条件的前面一条记录比较)
在现在这些数据里面1,2,3,5和4,6可以分为两组,他们的size和color相同但cut属性不同。
在1,2,3,5中,(2,1),(3,2)满足条件,5只找和它前面最靠近的一个3,(5,3)不满足条件,不再比较(5,2)和(5,1)
在4,6中,(6,4)满足条件
最后得到结果就是,(2,1),(3,2),(6,4)

我写的语句如下:
select T1.ID,T2.ID from tbl_PolishedSKU T1
inner join tbl_PolishedSKU T2
on T1.size = T2.size and T1.Color=T2.Color
and T1.Sequence>T2.Sequence and T1.Price <T2.Price
order by T1.ID
得到的结果如下:
2 1
3 1
3 2
5 1
6 4
很明显,其中(5,1)和(3,1)是错误的,因为5只和最近的3比较,3只和最近的2比较

不知大家有啥想法?
...全文
76 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
benliliu 2007-09-30
  • 打赏
  • 举报
回复
能人都国庆去啦?
benliliu 2007-09-30
  • 打赏
  • 举报
回复
Hi 哥们,我终于给整出来了哈哈

select T1.*,T2.* from tbl_PolishedSKU T1
inner join tbl_PolishedSKU T2
on T1.size = T2.size and T1.Color=T2.Color
and T1.Sequence>T2.Sequence and T1.Price <T2.Price
and T2.ID=
(
select max(ID) from tbl_PolishedSKU
where ID<T1.ID and size = T1.size and Color=T1.Color
)
benliliu 2007-09-30
  • 打赏
  • 举报
回复
hei do熊,先谢谢你的回答了
不过这样为什么查出来的只有两条记录了?
2 1
3 2
dobear_0922 2007-09-30
  • 打赏
  • 举报
回复
select T1.ID,T2.ID from tbl_PolishedSKU T1
inner join tbl_PolishedSKU T2
on T1.size = T2.size and T1.Color=T2.Color
and T1.Sequence >T2.Sequence and T1.Price <T2.Price
and T2.ID=(select max(ID) from tbl_PolishedSKU where ID<T1.ID) --加上这一行就可以了
order by T1.ID

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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