Как объединить результирующий набор Common Table Expression с другими существующими таблицами в SQL Server 2005? - PullRequest
0 голосов
/ 15 ноября 2010

Я хочу объединить результирующий набор общего табличного выражения с существующей таблицей.Проблема возникает при использовании предложения group by, как указано в следующем запросе.Кто-нибудь может подсказать, пожалуйста, как объединить эти два стола?

Ответы [ 3 ]

1 голос
/ 15 ноября 2010

Вы можете определить несколько CTE для одного выбора, и каждый CTE может ссылаться на ранее определенные. Так что вы можете сделать:

With CTEQuery
as
(SELECT     StudentOnlineExamCourseAnswer.StudentID, StudentOnlineExamCourseAnswer.OnlineExamID, StudentOnlineExamCourseAnswer.CourseID, 
                      StudentOnlineExamCourseAnswer.CentreID,
case QuestionBank.ComplexLevelID when 1 then (2) when 2 then (4) when 3 then (6) when 4 then (8) when 5 then (10) end as Mark
FROM         QuestionBank INNER JOIN
                      StudentOnlineExamCourseAnswer ON QuestionBank.Answer = StudentOnlineExamCourseAnswer.Answer AND 
                      QuestionBank.QuestionID = StudentOnlineExamCourseAnswer.QuestionID)
, SummarizedCTE as ( 
select StudentID, OnlineExamID ,CourseID , CentreID , sum(Mark) as TotalMark from CTEQuery 
group by StudentID, OnlineExamID ,CourseID , CentreID)
select <new query involving joining SummarizedCTE with the "other table" referenced in your discussion>
0 голосов
/ 15 ноября 2010

Сначала вам нужно создать свой CTE, а затем использовать его в следующем SELECT выражении.

WITH cteTest (Column1) AS 
(
    SELECT column1
      FROM table1
)

SELECT *
  FROM cteTest
  JOIN Table2
    ON cteTest.column1 = Table2.column1
0 голосов
/ 15 ноября 2010

пример

with demoCTE 
as
(
  select id from table1
) select * from demoCTE
    join table2
   on demoCTE.id= table2.id
...