一不知该咋整的查询,请赐教
一张表如下:
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比较
不知大家有啥想法?