“ColumnName”不是可识别的表提示选项。使用查询加入表值函数时出错

时间:2015-08-11 14:31:26

标签: sql-server sql-server-2008 join

我有一个类似下面的样本表

表1

chktid   ToUser
1        3
2        6
3        3
4        1

chkid是parentId,有时这个父级有子级,每个子级都有子子级,等等

我编写了一个函数来返回特定chktid的所有子节点和子子节点。使用不同的dbo.hierychyreturnfn(chktid)作为输入参数调用我的函数chktid,我得到以下结果

对于 chktid = 1 以及select * from dbo.hierychyreturnfn(1),输出为:

chkchildid
10
11
12
13

对于 chktid = 2 以及select * from dbo.hierychyreturnfn(2),输出为:

chkchildid
14
15
16

对于 chktid = 3 以及select * from dbo.hierychyreturnfn(3),输出为:

chkchildid
19

对于 chktid = 4 以及select * from dbo.hierychyreturnfn(4),它不返回任何行,因为chkid = 4没有子项。

我的问题是:有没有办法加入函数和表1并返回所有结果?
我的预期结果是:

chkid       ToUser      chkchildid
1               3           10
1               3           11
1               3           12
1               3           13
2               6           14
2               6           15
2               6           16
3               3           19

我正在尝试使用交叉申请来获取此

SELECT a.chkid
    ,a.ToUser
    ,b.chkchildid
FROM table1 a
CROSS APPLY dbo.hierychyreturnfn(1) b // need to join table1 and pass each chkid

但我不知道如何将每个chkid传递给hierychyreturnfn()。我被困在这里。我也尝试了下面的代码,但它给出了一个错误

  

“chkid”不是可识别的表提示选项。如果它是作为一个   表值函数或CHANGETABLE函数的参数,   确保您的数据库兼容模式设置为90。

SELECT a.chkid
    ,a.ToUser
    ,b.chkchildid
FROM table1 a
CROSS APPLY dbo.hierychyreturnfn(chkid) b 

请帮我解决这个问题。

0 个答案:

没有答案