如何用sql查询或视图计算

时间:2013-03-14 08:54:12

标签: sql sql-server sql-server-2005 sql-server-2005-express

我有一张桌子

id name parentid
----------------
1  a     0
2  b     1
3  c     2
4  d     1

现在我想用

计算等级
  • 如果直接父ID为count = 6,则为level1,
  • 如果有6级1计数然后是level2,
  • 如果有6个level2计数然后是level3,依此类推

我正在使用SQL Server 2005 Express

2 个答案:

答案 0 :(得分:1)

你必须使用sql递归查询可能会对你有所帮助http://msdn.microsoft.com/en-us/library/ms186243(v=sql.105).aspx

答案 1 :(得分:0)

这应该可以完成这项工作:只需跳到父级,直到达到顶部并计算迭代次数。

create function dbo.CalcLevel (@ID int)
returns int
as
begin
  declare @level int=0
  while @ID != 0 begin
    select @ID=parentID from MyTable where ID=@ID
    set @level = @level + 1
    if (@level = 1000) set @ID = 0 -- compensate endless loop
  end
  return @level
end