SQL Server将视图与基于层次结构的集合交叉

SQL Server将视图与基于层次结构的集合交叉,sql,sql-server,view,hierarchy,cross-join,Sql,Sql Server,View,Hierarchy,Cross Join,我的SQL Server数据库中有一个视图,它基本上根据int类型的id值保存一些记录之间的层次结构信息。一个简单的表示如下: ID Parent_ID 1 NULL 2 1 3 2 4 NULL 5 4 ID Value 1 1 1 2 2 1 2 2 3 1 3 2 4 3 5 3 通过使用这个视图,

我的SQL Server数据库中有一个视图,它基本上根据int类型的id值保存一些记录之间的层次结构信息。一个简单的表示如下:

ID    Parent_ID   
1     NULL  
2     1  
3     2  
4     NULL  
5     4
ID    Value  
1      1  
1      2  
2      1  
2      2  
3      1  
3      2  
4      3  
5      3  
通过使用这个视图,我试图生成另一个视图。我希望从ID=1(1、2和3)派生的所有记录都与一个集合交叉,而其他记录(4、5)与另一个集合交叉。例如,将从ID=1派生的所有记录与集合(1,2)交叉,并将其他记录与集合3交叉,我需要如下视图:

ID    Parent_ID   
1     NULL  
2     1  
3     2  
4     NULL  
5     4
ID    Value  
1      1  
1      2  
2      1  
2      2  
3      1  
3      2  
4      3  
5      3  

你有什么问题?你尝试过什么?用集合交叉表是可能的,但我需要一种机制,让对象的所有祖先检查对象的id是否在其中,以决定我需要与哪个集合交叉。似乎我需要一个类似光标的方法。我认为CTE的魔力在于它,但我不知道如何使用它