分层错误

时间:2015-09-18 03:18:23

标签: sql sql-server

这是我的代码:

    with t(branch_id, branch_code, branch, parent_branch_id, level) as
  (
    Select parent_b.BRANCH_ID, parent_b.BRANCH_CODE,
           parent_b.BRANCH, parent_b.PARENT_BRANCH_ID, 0 as level
    from table parent_b
    Where parent_b.branch_Id is null--= 1
    UNION ALL
    Select child_b.BRANCH_ID, child_b.BRANCH_CODE,
           child_b.BRANCH, child_b.PARENT_BRANCH_ID, (t.level+1)
    from table child_b 
    INNER JOIN t parent
       ON parent.branch_id = child_b.parent_branch_id
  )
  select * from t

我的输出错误。哪个错误,我无法找到。

错误:

  

多部分标识符" t.level"无法受约束。

1 个答案:

答案 0 :(得分:0)

t.level更改为parent.level。您已将CTE的别名指定为“parent”。你需要使用它。

  with t(branch_id, branch_code, branch, parent_branch_id, level) as
  (
    Select parent_b.BRANCH_ID, parent_b.BRANCH_CODE,
           parent_b.BRANCH, parent_b.PARENT_BRANCH_ID, 0 as level
    from table parent_b
    Where parent_b.branch_Id is null--= 1
    UNION ALL
    Select child_b.BRANCH_ID, child_b.BRANCH_CODE,
           child_b.BRANCH, child_b.PARENT_BRANCH_ID, (parent.level+1)
    from table child_b 
    INNER JOIN t parent
       ON parent.branch_id = child_b.parent_branch_id
  )
  select * from t