当前位置: 代码迷 >> Sql Server >> 上下级品种整合在一起
  详细解决方案

上下级品种整合在一起

热度:59   发布时间:2016-04-24 09:00:47.0
上下级类别整合在一起
很久没写SQL语句了.有点不会了!

表A

id           name             parentid         depth
1            移动设备        0                      1
2            电脑周边        0                      1
3            大家电            0                      1
4            无线路由        1                      2
5            无线网卡        1                      2
6            冰箱                3                      2

要按父-子关系来排列

id           name             parentid         depth
1            移动设备        0                      1
4            无线路由        1                      2
5            无线网卡        1                      2
2            电脑周边        0                      1
3            大家电            0                      1
6            冰箱                3                      2

首先按顶级分类排列.每个分页下是他们的子分类列表
 
------解决思路----------------------
--上面有个错误
with cte as
(select *,rn=convert(varchar,row_number() over (order by id)) from A where parentid=0
union all
select A.*,convert(varchar,rn+'-'+convert(varchar,A.id)) from A,cte t where A.parentid=t.id)

select * from cte order by rn 
------解决思路----------------------
要求没太明白,,可以再清楚一些吗
------解决思路----------------------
;WITH CTE AS(
SELECT id,name,parentid,depth
,CAST(id+'-' AS VARCHAR(8000))[Path]
FROM A
WHERE parentid=0
UNION ALL
SELECT T1.id,T1.name,T1.parentid,T1.depth
,T2.[Path]+CAST(T1.id+'-' AS VARCHAR(8000))
FROM A T1
JOIN CTE T2 ON T1.parentid=T2.id
)
SELECT id,name,parentid,depth
FROM CTE
ORDER BY [Path]
  相关解决方案