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 に答える