2011-09-27 28 views
-3

我得到的错误,不正确的语法关键字接近“WHERE”错误时表

所有我想要做的是使用一些列从另一个表

SELECT unitCode, studentID, s.studentFName 
FROM Student As S Right outer Join  
     (SELECT unitCode, studentID, 
      SUM(CASE WHEN subStatus = 'Yes' THEN 1 ELSE 0 END) AS CountYes, 
      SUM(CASE WHEN subStatus = 'No' THEN 1 ELSE 0 END) AS CountNo 
     FROM Assignment 
     GROUP BY unitCode, studentID) 
WHERE (CountNo > 0) AND (CountYes = 0) AND s.studentID = assignment.studentID 
+0

不是有缺失右括号在最后? –

+1

@BenClayton:不,不存在:-) –

+0

@David:你为什么从这个问题中删除了这些陈述,并试图从我的答案中删除它? –

回答

2

子选择必须有一个别名SQL Server。

更改此:

OUTER JOIN (SELECT ...) 

这样:

OUTER JOIN (SELECT ...) T1 
+0

正如丹尼尔提到的那样,失踪了...... –

3

您加入缺少了ON clause和子查询缺少别名:

SELECT 
    unitCode, studentID, s.studentFName 
FROM 
    Student As S 
    Right outer Join  
    (
     SELECT 
      unitCode, studentID, 
      SUM(CASE WHEN subStatus = 'Yes' THEN 1 ELSE 0 END) AS CountYes, 
      SUM(CASE WHEN subStatus = 'No' THEN 1 ELSE 0 END) AS CountNo 
     FROM 
      Assignment 
     GROUP BY unitCode, studentID 
    ) as assignment 
    on s.studentID = assignment.studentID 
WHERE 
    (CountNo > 0) AND (CountYes = 0) 
;