对于从另一个CTE返回的每一行,在CTE内调用用户定义的函数

dav*_*ell 2 t-sql sql-server-2008

我有一个CTE返回多行的查询,我想为返回的每一行执行一个函数.有可能,我在google上查了一下,它说使用临时表来填充结果.我只是想确认一下

with job_list as (  select JOB_ID,CREATED_DATE from job_table)  ,
app_list as (select APP_ID from job_list jobs, dbo.fnGetApp(jobs.JOB_ID,9))
select * from job_list, app_list 
Run Code Online (Sandbox Code Playgroud)

这不是确切的查询,我已经简化了解我面临的问题.

dbo.fnGetApp是一个函数,它接受两个参数varchar和int并返回一个列的表(varchar APP_ID)

错误 - 无法绑定多部分标识符"jobs.JOB_ID".

我想为job_listCTE 返回的每一行运行该函数,并将结果用作CTE另一个使用两者的查询CTEs

谢谢大卫

Ari*_*ion 5

你不能这样做:

with job_list as 
(  
   select 
     JOB_ID,
     CREATED_DATE 
   from 
     job_table
),
app_list as 
(
   select 
      APP_ID 
   from 
     job_list AS jobs 
     CROSS APPLY dbo.fnGetApp(jobs.JOB_ID,9) AS something
)
select * from 
job_list, 
app_list
Run Code Online (Sandbox Code Playgroud)