`
yhef
  • 浏览: 68959 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Sql Server level查询(转)

 
阅读更多
转自:http://bbs.csdn.net/topics/320023621


if OBJECTPROPERTY(object_id('tb'),'isusertable')<>0 
  drop table tb
create table tb(ybh nvarchar(10),ebh nvarchar(10),beizhu nvarchar(1000))
insert tb
select '0001',null,'云南省'
union all select '0002','0001','昆明市'
union all select '0003','0001','昭通市'
union all select '0009','0001','大理市'
union all select '0008',null,'四川省'
union all select '0004',null,'贵州省'
union all select '0005','0002','五华区'
union all select '0007','0002','水富县'
union all select '0006','0005','西园路192号'
union all select '0010','0006','金色梧桐'
union all select '0011','0010','科技有限公司'
union all select '0015','0007','两碗乡'
union all select '0013','0015','两碗村'
union all select '0012','0013','某跨国集团董事长'
union all select '0014','0008','成都市'

--select * from tb
--广度排序(先显示第一层节点,再显示第二次节点......)
--定义辅助表
declare @level_tb table(bh nvarchar(10),level int)
declare @level int
set @level=0
insert @level_tb(bh,level)
select ybh,@level from tb where ebh is null
while @@ROWCOUNT>0
  begin
    set @level=@level+1
    insert @level_tb(bh,level)
      select ybh,@level 
        from tb a,@level_tb b
        where a.ebh=b.bh 
              and b.level=@level-1
  end 
  select a.*,b.* from tb a,@level_tb b where a.ybh=b.bh order by level



--以下是自己的例子,没有环境你可能不能正常运行:

declare @level_tb table(lov_id varchar(50),lov_name varchar(200),level int)
declare @level int
set @level=0
insert @level_tb(lov_id,lov_name,level)
select t.row_id,t.LOV_NAME,@level from T_SYS_LIST_OF_VAL t where t.LOV_TYPE ='ADMINISTRATIVE_DIVISION' and t.PAR_LOV_ID=1
while @@ROWCOUNT>0
  begin
    set @level=@level+1
    insert @level_tb(lov_id,lov_name,level)
      select a.row_id,b.lov_name,@level 
        from T_SYS_LIST_OF_VAL a,@level_tb b
        where a.PAR_LOV_ID=b.lov_id 
              and b.level=@level-1
  end  
select a.row_id,a.LOV_NAME,a.LOV_VAL,b.level 
from T_SYS_LIST_OF_VAL a,@level_tb b where a.ROW_ID=b.lov_id order by level
分享到:
评论

相关推荐

    SQLServer2008附加SQLServer2005数据库

    ### SQL Server 2008 附加 SQL Server 2005 数据库 #### 背景介绍 在日常工作中,我们可能会遇到需要将不同版本的 SQL Server 数据库进行迁移或附加的情况。例如,从 SQL Server 2005 升级到 SQL Server 2008 的...

    实现 Oracle 连接 SQL Server

    4. **测试连接**:使用创建好的数据库链接查询 SQL Server 数据库中的表,例如: ``` SELECT * FROM jobs@pubs; ``` 如果连接成功,将返回 SQL Server 数据库中的数据。 #### 结论 通过以上步骤,可以成功...

    查看SQL Server 版本及其补丁号

    对于SQL Server 2000,查询版本和补丁号的T-SQL语句与2005版本基本相同: ```sql SELECT SERVERPROPERTY('ProductVersion') AS 'Version', SERVERPROPERTY('ProductLevel') AS 'Patch Level', SERVERPROPERTY('...

    sqlserver-oracle 数据类型对照

    - `LEVEL`在Oracle的`CONNECT BY`查询中用于表示层级,SQL Server中无直接对应。 了解这些对照关系对于在SQL Server和Oracle之间迁移数据或编写跨平台的SQL脚本至关重要。同时,开发者也需要根据实际需求和数据库...

    Sqlserver 自定义函数 Function使用介绍

    SQL Server中的自定义函数是数据库开发中非常重要的组成部分,它们允许开发者创建自定义的逻辑,以便在查询中重用和简化复杂操作。本篇主要关注SQL Server 2008中的三种自定义函数:标量函数、内联表值函数和多语句...

    SqlServer2008查询优化研究报告

    ### SqlServer2008查询优化研究报告 #### 1. 引言 随着信息技术的飞速发展,数据库技术被广泛应用于各个领域的处理系统之中。在这些应用中,数据量的增长速度越来越快,尤其是在金融、交通、互联网搜索等领域,对...

    Sql server 存儲過程技巧

    EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT IF @hr &lt;&gt; 0 BEGIN EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT SELECT hr = CONVERT(VARBINARY(4), @hr), Source = @src, Description = @...

    sql server 2812错误处理

    1. **打开SQL Server查询分析器**:首先,需要登录到SQL Server实例,并打开SQL Server Management Studio(SSMS)或其他查询工具。 2. **运行恢复存储过程的脚本**:在查询编辑器中,执行以下T-SQL命令来恢复所需...

    SQLSERVER快照隔离

    "SQLSERVER快照隔离" SQL Server 2005 中引入了快照隔离(Snapshot Isolation)机制,该机制可以提供非阻碍、非锁定的读取一致性,解决了传统的读取已提交(Read Committed)事务隔离级别下的争用问题。 快照隔离...

    sqlserver排名次若干种方法

    ### SQL Server 排名次若干种方法 在SQL Server中,对特定字段进行排序和排名是一种常见的需求。本文将详细探讨几种实现这一功能的方法,并针对不同的业务场景提供解决方案。 #### 场景概述 假设我们有一张表,...

    oracle10g或11g通过dblink访问sql server数据库

    ### Oracle 10g 或 11g 通过 DBLink 访问 SQL Server 数据库 #### 概述 本文档详细介绍了如何在Oracle 10g或11g环境中使用DBLink来访问SQL Server数据库的方法。这种方法对于那些习惯于使用Oracle进行数据库操作的...

    SqlServer并发调优

    标题和描述均聚焦于"SqlServer并发调优"这一主题,涉及了并发环境下SQL Server数据库性能优化的关键技术点,包括锁管理、事务隔离等级、锁升级、动态锁等。以下是对这些核心知识点的深入解析。 ### 锁和锁管理 ###...

    通过ORACLE通用连接访问SQLServer数据库的方法

    这种方法主要依赖于Oracle数据库的异构服务功能,允许用户从Oracle环境中直接查询或操作其他类型数据库(如SQL Server)中的数据。接下来,我们将详细探讨实现这一连接的具体步骤与注意事项。 ### 一、配置ODBC数据...

    SQL Server 2005 ETL专家系列之四:SQL Server 2005 Integration Service的扩展能力

    SQL Server 2005 ETL专家系列之四:SQL Server 2005 Integration Service的扩展能力 讲师信息:陈亮 2007年03月19日 14:00-15:30 Level: 200 为什么会出问题呢?包在执行过程中究竟发生了什么事情?这些异常我又...

    sqlserver jdbc 4.2

    SQL Server JDBC 4.2是微软官方为Java开发者提供的用于连接SQL Server数据库的驱动程序,它遵循Java Database Connectivity (JDBC) API标准。这个版本的驱动程序提供了与SQL Server 2008及更高版本的兼容性,支持...

    oracle通过odbc建立dblink访问sqlserver数据库

    ### Oracle通过ODBC建立DBLink访问SQLServer数据库 在企业级应用环境中,不同数据库系统间的交互变得越来越频繁。为了实现Oracle数据库与SQLServer数据库之间的数据交换,可以通过多种方式实现连接,其中一种较为...

    2023年SQLServer基础查询练习附答案.doc

    SQL Server 基础查询练习附答案 本文档提供了一个完整的 SQL Server 基础查询练习附答案,涵盖了数据库创建、表创建、索引创建、查询语句、排序、分组、连接、子查询等多个方面的知识点。 数据库创建 在 SQL ...

    sqlserver2000转2005

    ### SQL Server 2000升级到SQL Server 2005的方法与步骤 #### 一、概述 在IT行业中,随着技术的发展和需求的变化,数据库系统的升级是不可避免的。从SQL Server 2000升级到SQL Server 2005是一个常见的升级路径,...

    Microsoft SQL Server 2005 Express Edition SP3

    Microsoft SQL Server 2005 Express Edition SQL Server 文档小组无法回答技术支持问题,但是欢迎您对本自述文档提出建议和意见。您可以使用提供的链接快速、直接地发送电子邮件反馈。请使用英语发送您的反馈信息...

Global site tag (gtag.js) - Google Analytics