189 8069 5689

sqlserver多级,sql多级排序

sql语句问题,多级分类表

使用decode循环读出所有资料

创新互联公司专注骨干网络服务器租用十余年,服务更有保障!服务器租用,服务器托管 成都服务器租用,成都服务器托管,骨干网络带宽,享受低延迟,高速访问。灵活、实现低成本的共享或公网数据中心高速带宽的专属高性能服务器。

SELECT categorid FROM

(SELECT categorid,

DECODE

(categorid,ParentID , NULL,ParentID ) ParentID

FROM table) t

START WITH categorid= ‘’

CONNECT BY PRIOR t.categorid= t.ParentID

试一下吧

你的数据库是什麽 这个是Oracle下的语法,抱歉 没说清楚

Decode只有Oracle有提供,SQLServer不太清楚,不然写过简单的SP调用一下吧 用Sp把资料都循环出来组个串传出来好了

你的需求讲的很清楚,如果SQLServer中没有相关函数直接使用 还不如写个SP调用

MS SQLServer 多级父子关系数据查询

加多一列层级码,会简单很多比如亚洲用‘01’ 中国用‘0101’,北京用‘010101‘,海定用‘01010101’,东城用’01010102‘

这样语句可以

select id as col1,(select name from 表 where code = SubString(a.Code, 1,2)) as col2,

(select name from 表 where code = SubString(a.Code, 3,2)) as col3,

(select name from 表 where code = SubString(a.Code, 5,2)) as col4,

(select name from 表 where code = SubString(a.Code, 7,2)) as col5

from 表 a where Type = 'Distric'

不然

(select d.name from 表 b, 表 c, 表 d where a.parentid = b.id and b.parentid = c.id

and c.parentid = d.id) as col2,...

写起来比较麻烦

SQL多级查询问题

Oracle 可采用下面这种写法:

SELECT

LPAD(' ', 2*(LEVEL-1)) || brandname AS name

FROM

START WITH

brandid = 1

CONNECT BY PRIOR brandid = brandparentid;


文章标题:sqlserver多级,sql多级排序
文章地址:http://cdxtjz.com/article/phdjpd.html

其他资讯