当前位置: 代码迷 >> Sql Server >> 求一很难的SQL (要在ACCESS 里也运行 ),用于服装类软件 多商品,多尺码横排有关问题!
  详细解决方案

求一很难的SQL (要在ACCESS 里也运行 ),用于服装类软件 多商品,多尺码横排有关问题!

热度:35   发布时间:2016-04-24 09:13:37.0
求一很难的SQL (要在ACCESS 里也运行 ),用于服装类软件 多商品,多尺码横排问题!!
原数据表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
不确定可不可以,你试下
  相关解决方案