我试图寻找解决方案,但我找不到符合这种情况的解决方案。
首先,我必须说我的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中运行它运行正常,没有错误。但是当我尝试在这个查询中运行它时,我得到一个错误,红色波浪线在'选择@root As'告诉我以下内容:
'选择'附近的语法错误 期待')',EXCEPT或UNION
我不知道如何解决这个问题。如果我删除最后一次“离开加入”'行查询运行正常。
有什么想法吗?
答案 0 :(得分:0)
而不是最后一次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
然后在第一个sr.rootsource
的列中加入SELECT
。