-------------------------------------
-- Author : liangCK 梁爱兰
-- Comment: 小梁 爱 兰儿
-- Date : 2009-07-30 16:38:39
-------------------------------------
--> 生成测试数据: @T
DECLARE @T TABLE (id INT,pid INT,name VARCHAR(3))
INSERT INTO @T
SELECT 1,1,'A' UNION ALL
SELECT 2,2,'B' UNION ALL
SELECT 11,1,'AA' UNION ALL
SELECT 111,11,'AAA' UNION ALL
SELECT 22,2,'BB' UNION ALL
SELECT 33,2,'CC' UNION ALL
SELECT 44,11,'DDD' UNION ALL
SELECT 55,1,'EE'
--SQL查询如下:
;WITH Liang AS
(
SELECT *,CAST(ROW_NUMBER() OVER(ORDER BY id) AS VARBINARY(MAX)) AS [Path] ,
flag = CAST(id AS VARCHAR(MAX)),0 AS level FROM @T AS A
WHERE NOT EXISTS(SELECT * FROM @T WHERE id=A.pid AND id!=A.id)
UNION ALL
SELECT A.*,
CAST(B.[Path]+CAST(ROW_NUMBER() OVER(PARTITION BY B.pid ORDER BY A.id) AS BINARY(4))
AS VARBINARY(MAX)),
CAST(B.flag + '.' + RTRIM(A.id) AS VARCHAR(MAX)),level+1
FROM @T AS A
JOIN Liang AS B
ON A.pid=B.id
AND CHARINDEX('.'+RTRIM(A.id)+'.','.'+B.flag+'.')=0
)
SELECT REPLICATE('-',level)+name AS name FROM Liang ORDER BY [Path];
/*
name
---------------------------------
A
-AA
--DDD
--AAA
-EE
B
-BB
-CC
(8 行受影响)
*/
---------------------------------
-- Author: htl258(Tony)
-- Date : 2009-07-30 17:19:15
---------------------------------
--> 生成测试数据表:tree
If not object_id('[tree]') is null
Drop table [tree]
Go
Create table [tree]([id] int,[pid] int,[name] nvarchar(3))
Insert tree
Select 1,1,'A' union all
Select 2,2,'B' union all
Select 11,1,'AA' union all
Select 111,11,'AAA' union all
Select 22,2,'BB' union all
Select 33,2,'CC' union all
Select 44,11,'DDD' union all
Select 55,1,'EE'
Go
--Select * from tree
-->SQL查询如下:
;with t as
(
select *,0 as lvl,px=cast(name as varchar(max))
from tree a
where not exists(
select 1
from tree
where case a.pid when a.id then 0 else a.pid end = id)
union all
select a.*,b.lvl+1,cast(b.px+'-'+a.name as varchar(max))
from tree a
join t b
on case a.pid when a.id then 0 else a.pid end=b.id
)
select replicate('-',lvl)+name as name
from t
order by px
/*
name
----------------
A
-AA
--AAA
--DDD
-EE
B
-BB
-CC
(8 行受影响)
*/
分享到:
相关推荐
完整的SAP BOM展开程序,可以批量展开。
ERP U9 BOM展开SQL脚本,U9ERP可以直接使用
K3BOM展开代码提供给有需要的朋友,是针对K3 V11真实数据来的哦!
BOM多级展开Form_TreeView_Bom,查询,等功能!
金蝶K3 Wise BOM多级展开查询(SQL)
SQL多层BOM展开实用代码
ERP中bom展开SQL,直接展开到最底层,数据存储在临时表
易飞ERP BOM多阶展开,包括2个函数和存储过程。 执行:exec [dbo].[SZPro_ExpandEndBomCN] '3010110100000058','3010110100000058',''
apps.bompexpl.exploder_userexit
用友U8全阶展开存储过程
使用VBA 连接ORACEL数据独立式的BOM ,展开至最后一阶
只需要修改下面指定修改部分即可使用,原则上支持树形展开和排序,但由于实际数据量很大,因此可以按料段展开(U9 V3.0),欢迎交流。
博文链接:https://jgtang82.iteye.com/blog/125611
展多阶BOM,不限版本号SQL语句
BOM学习文档,可以学到BOM与window之间的关系,为什么instanceof有其局限性
直接读ORACLE的BOM展开,转化为页面数据
K3 BOM K3BOM K3 BOM K3BOM K3 BOM K3BOM K3 BOM K3BOM
bom 分层展开
BOM是browser object model的缩写,简称浏览器对象模型。它提供了独立于内容而与浏览器窗口进行交互的对象,并且每个对象都提供了很多方法和属性。BOM主要用于管理窗口与窗口之间的通信,因此其核心对象时window。
oracle BOM学习资料...........