复杂查询不正确的语法错误

Complex Query Incorrect Syntax Error

我曾尝试寻找解决方案,但未能找到适合这种情况的解决方案。

首先我必须说我的 SQL 生锈了很多。以下查询是迄今为止我做过的最复杂的查询。

这里是查询:

Declare @root varchar(Max)
set @root = ''

Select 
    ib.irrnum, ib.status, pu.probtype, 
    ib.submitby, ta.[Task Action], ib.area, co.cost, 
    rc.rootcause, ib.jobnum
From
    tbl_irrbase ib
Left Join 
    tbl_cost co On ib.irrnum = co.irrnum
Left join 
    (Select Distinct probtype, irrnum 
     From tbl_probtype) pu On ib.irrnum = pu.irrnum
Left Join 
    (Select Distinct rootcause, irrnum 
     From tbl_rtcause) rc On ib.irrnum = rc.irrnum
Left Join 
    (Select TOP 1 
         (owner + Space(1) + Convert(varchar(10), senddate, 101) + Space(1) + taskitem) As 'Task Action', 
         irrnum 
     From 
         (select * From tbl_taskaction) ta 
     Order by 
         senddate Desc, sendtime Desc) ta On ib.irrnum = ta.irrnum
left Join 
    (Select [@root] = @root + rs.rootsource + Space(3), irrnum 
     From tbl_rtsource rs 
     Where rs.entrydate Between '10/04/2016' And '10/06/2016' 
     Select @root As 'Root Source') sr On ib.irrnum = sr.irrnum
Where 
    ib.submitedate between '09/28/2016' And '10/05/2016'

我的问题出在最后一个 Left Join 行。如果我取出整个 Select 语句并在 SSMS 中 运行 它 运行 没问题,没有错误。但是当我在这个查询中尝试 运行 它时,我得到一个错误,'Select @root As' 下的红色波浪线告诉我以下内容:

Incorrect Syntax near 'Select'.
Expecting ')', EXCEPT, or UNION

我不知道如何解决这个问题。如果我删除最后一个 'Left Join' 行,查询 运行 没问题。

有什么想法吗?

而不是最后一个 LEFT JOIN,尝试这样的事情:

CROSS APPLY (
    SELECT (
        SELECT rs.rootsource + Space(3)
        From tbl_rtsource rs 
        Where rs.entrydate Between '10/04/2016' And '10/06/2016' 
        AND rs.irrnum=ib.irrnum
        FOR XML PATH('')
    ) AS rootsource
) sr

然后在第一个 SELECT 的列中包含 sr.rootsource