我是SQL新手。我有一个名为management
的表。我正在尝试编写如下查询:
SELECT
registerd, Appeared, registerd + Appeared AS col3
FROM
(SELECT
COUNT(REGDNO) AS registerd, branch_code,
SUM(CASE WHEN SUB1_GRADE <> 'Ab' AND SUB1_GRADE IS NOT NULL OR
SUB2_GRADE <> 'Ab' AND SUB1_GRADE IS NOT NULL OR
SUB2_GRADE <> 'Ab ' AND SUB2_GRADE IS NOT NULL OR
SUB3_GRADE <> 'Ab' AND SUB3_GRADE IS NOT NULL OR
SUB4_GRADE <> 'Ab' AND SUB4_GRADE IS NOT NULL OR
SUB5_GRADE <> 'Ab' AND SUB5_GRADE IS NOT NULL OR
SUB6_GRADE <> 'Ab' AND SUB6_GRADE IS NOT NULL OR
SUB7_GRADE <> 'Ab' AND SUB7_GRADE IS NOT NULL
THEN 1 ELSE 0 END) As Appeared
FROM
MANAGEMENT) AS subQueryAlias
GROUP BY
BRANCH_CODE
但是我遇到了以下错误
信息8120,第16级,状态1,第5行
选择列表中的“ MANAGEMENT.BRANCH_CODE”列无效,因为它既不包含在聚合函数中也不在GROUP BY子句中
答案 0 :(得分:2)
group by
子句应该是内部子查询的一部分,而不是外部查询的一部分:
SELECT registered, appeared, registered + appeared AS col3
FROM (SELECT branch_code,
COUNT(regdno) AS registered,
SUM(CASE WHEN sub1_grade <> 'Ab' AND sub1_grade IS NOT NULL OR
sub2_grade <> 'Ab' AND sub1_grade IS NOT NULL OR
sub2_grade <> 'Ab' AND sub2_grade IS NOT NULL OR
sub4_grade <> 'Ab' AND sub3_grade IS NOT NULL OR
sub4_grade <> 'Ab' AND sub4_grade IS NOT NULL OR
sub5_grade <> 'Ab' AND sub5_grade IS NOT NULL OR
sub6_grade <> 'Ab' AND sub6_grade IS NOT NULL OR
sub7_grade <> 'Ab' AND sub7_grade IS NOT NULL
THEN 1
ELSE 0
END) AS appeared
FROM management
GROUP BY branch_code) AS subQueryAlias