0

我有一个看起来像这样的查询

WITH CTE AS 
(
 SELECT
    ROW_NUMBER() OVER(PARTITION BY JobID ORDER BY JobID) AS RowNbr,JobsTagMap.JobID
 FROM JobsTagMap
)
SELECT 
    *,
    STUFF((SELECT ',' + Title 
           FROM Tags
           JOIN JobsTagMap ON Tags.TagID = JobsTagMap.TagID
           WHERE JobsTagMap.JobID = CTE.JobID
           FOR XML PATH('')
          ), 1, 1, '') AS Title
FROM CTE
WHERE CTE.RowNbr = 1

现在,我想做这样的事情(上面的查询称为“我的大查询”)

SELECT * FROM Jobs LEFT JOIN ('my big query') q on Jobs.JobID=q.JobID

但是当我这样做时,我得到一个错误

关键字“with”附近的语法不正确。如果此语句是公用表表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前面的语句必须以分号结束。

我应该如何加入这样的查询?

4

1 回答 1

1

试试这个:

;WITH Cte AS 
(
    SELECT Row_number() OVER(partition BY JobID ORDER BY JobID) AS RowNbr, 
         JobsTagMap.JobID 
    FROM JobsTagMap
), FinalCte AS
( 
    SELECT*, 
                Stuff ((SELECT ',' + Title 
                                FROM   Tags 
                                             JOIN JobsTagMap 
                                                 ON Tags.TagID = JobsTagMap.TagID 
                                WHERE  JobsTagMap.JobID = CTE.JobID 
                                FOR xml path('')), 1, 1, '') AS Title 
    FROM   cte 
    WHERE  CTE.RowNbr = 1 
)
SELECT * 
    FROM Jobs LEFT JOIN FinalCte q 
        ON Jobs.JobID=q.JobID
于 2012-05-21T03:49:19.410 回答