很抱歉这可能是一个愚蠢的问题,但我是SQL Server的新手。这是我组织部门表的结构:
id int(16) -- simply unique id
sub_id int(16) -- this id of parent division in this table (if zero, than it don't have parent)
name VARCHAR(200) -- name of division
我需要创建一个简单的过程,它返回一些分区中的所有细分ID(也有顶级分区ID)。我想我需要在循环中使用subid的数组,但我不知道如何在SQL Serve中创建数组o_0(omg ..数组存在于(T)SQL语言中?=)。请帮忙。或者也许是另一种方式来获得它?
答案 0 :(得分:3)
如果我正确理解了你的问题,你需要一个递归的CTE。
CREATE PROCEDURE dbo.foo
@id int
AS
WITH divisions AS
(
SELECT id, sub_id, name
FROM YourTable
WHERE id = @id
UNION ALL
SELECT y.id, y.sub_id, y.name
FROM YourTable y
JOIN divisions d ON d.id = y.sub_id
)
SELECT id, sub_id, name
FROM divisions
答案 1 :(得分:1)
SELECT id
FROM table
WHERE sub_id = @target
UNION ALL
SELECT @target