CTE问题,执行时出错.无法创建摘要报告

mos*_*oss 0 sql t-sql sql-server common-table-expression

我想创建一个摘要报告.我对CTE来说是全新的.

错误详情:

消息102,级别15,状态1,行1
'''附近的语法不正确.
消息102,级别15,状态1,行11
'','附近的语法不正确.

码:

WITH T1(PlannedFY, Media_Activity_Type.[Type], ReportingQuarter, Summary, ID) AS  
(
    SELECT 
       COUNT(MediaActivities.MediaActivityId) AS [PlannedFY],
       Media_Activity_Type.[Type] AS [ID], 
       MediaActivities.ReportingQuarter, 
       MediaActivities.Summary,
       MediaActivities.TypeId
    FROM 
       Media_Activity_Type 
    INNER JOIN
       MediaActivities ON Media_Activity_Type.TypeId = MediaActivities.TypeId
    GROUP BY 
       MediaActivities.MediaActivityId, Media_Activity_Type.[Type],  
       MediaActivities.ReportingQuarter, MediaActivities.Achivied, 
       MediaActivities.Summary, MediaActivities.TypeId
),
T2(Achieved, ID) AS
(              
   SELECT     
      COUNT(MediaActivities.Achivied) AS [Achieved], 
      Media_Activity_Type.TypeId AS [ID]
   FROM         
      MediaActivities 
   INNER JOIN
      Media_Activity_Type ON MediaActivities.TypeId = Media_Activity_Type.TypeId
   GROUP BY 
      Media_Activity_Type.TypeId, MediaActivities.Achivied
   HAVING 
      MediaActivities.Achivied = 1
)    
SELECT 
   T1.*, T2.Achieved 
FROM 
   T1     
INNER JOIN 
   T2 ON T1.ID = T2.ID 
Run Code Online (Sandbox Code Playgroud)

a_h*_*ame 5

该部件的"参数" with定义列别名,它们不引用"实际"列.所以你应该改变:

WITH T1(PlannedFY,Media_Activity_Type.[Type],ReportingQuarter,Summary,ID)
Run Code Online (Sandbox Code Playgroud)

WITH T1(PlannedFY,[Type],ReportingQuarter,Summary,ID)
Run Code Online (Sandbox Code Playgroud)

它说"创造一个与CTE列PlannedFY,[Type],ReportingQuarter,SummaryID