请教,sql语句递归!

[复制链接]
查看11 | 回复7 | 2007-10-20 08:38:44 | 显示全部楼层 |阅读模式
sql server 里面递归的sql语句怎么写?
跪求个例子!
谢谢!!
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
oracle 里面有,但不知道sql server里面怎么写。
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
SQL 2005里面支持这种写法!
具体参考:CET用法!
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
3楼如果可能贴上个递归sql?
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
-- Using CTEs Recursively
use demo
go
CREATE TABLE CarParts
(

CarID int NOT NULL,

Part varchar(15),

SubPart varchar(15),

Qty int
)
GO
INSERT CarParts
VALUES (1, 'Body', 'Door', 4)
INSERT CarParts
VALUES (1, 'Body', 'Trunk Lid', 1)
INSERT CarParts
VALUES (1, 'Body', 'Car Hood', 1)
INSERT CarParts
VALUES (1, 'Door', 'Handle', 1)
INSERT CarParts
VALUES (1, 'Door', 'Lock', 1)
INSERT CarParts
VALUES (1, 'Door', 'Window', 1)
INSERT CarParts
VALUES (1, 'Body', 'Rivets', 1000)
INSERT CarParts
VALUES (1, 'Door', 'Rivets', 100)
INSERT CarParts
VALUES (1, 'Door', 'Mirror', 1)
go
select * from CarParts
go
WITH CarPartsCTE(SubPart, Qty)
AS
(

-- Anchor Member (AM):

-- SELECT query that doesn’t refer back to CarPartsCTE

SELECT SubPart, Qty

FROM CarParts

WHERE Part = 'Body'

UNION ALL

-- Recursive Member (RM):

-- SELECT query that refers back to CarPartsCTE

SELECT CarParts.SubPart, CarPartsCTE.Qty * CarParts.Qty

FROM CarPartsCTE

INNER JOIN CarParts ON CarPartsCTE.SubPart = CarParts.Part

WHERE CarParts.CarID = 1
)
--outer query
SELECT SubPart, SUM(Qty) AS TotalNUM
FROM CarPartsCTE
GROUP BY SubPart
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
请问,sqlserver 2000 里不行吗?
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
不行!CTE是SQL 2005的T——SQL增强功能!
如果你自己一定要用在2000里面,请用XP功能!
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
XP功能是什么功能?能详细说点不?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行