原数据表A如下:
goodid sizeid name
3 7 34码
3 8 35码
3 13 36码
3 10 37码
3 11 超大码
4 7 34码
4 8 35码
4 6 XL
5 14 (均码)
通过一条SQL生成以下数据形式(产生groupID 列,此列的值为按goodid 分组后,每组从1...n的数值)
goodid sizeid name groupID
3 7 34码 1
3 8 35码 2
3 13 36码 3
3 10 37码 4
3 11 超大码 5
4 7 34码 1
4 8 35码 2
4 6 XL 3
5 14 (均码) 1
------解决思路----------------------
with data(goodid,sizeid,name, groupID) as
(
select 3, 7, '34',1 union all
select 3, 8, '35',2 union all
select 3, 13, '36',3 union all
select 3, 10, '37',4 union all
select 3, 11, 'XL', 5 union all
select 4, 7, '34',1 union all
select 4, 8, '35',2 union all
select 4, 6, 'XL', 3 union all
select 5,14, '(jm)', 1
)
SELECT data.*,row=ROW_NUMBER()OVER(Partition by goodid ORDER BY data.sizeid) FROM data
------解决思路----------------------
SELECT T1.goodid,T1.sizeid,T1.name不确定可不可以,你试下
,COUNT(T2.goodid)AS groupID
FROM A AS T1
LEFT JOIN A AS T2 ON T1.goodid=T2.goodid AND T1.sizeid>=T2.sizeid
GROUP BY T1.goodid,T1.sizeid,T1.name