我有一个临时表,我正在阅读,我想查看其中一个只有两个等级值的列 - 3或4并构建两个新列 - 一个保持计数的列通过一个特定的分组,3和另一个来保持4的计数。我的代码看起来像这样。
Select Max(Counting) as Total
, student
, stdType
, Score3 = (SELECT count(*) from #tempBWMSHonors3 where score = '3')
, Score4 = (SELECT count(*) from #tempBWMSHonors3 where score = '4')
from #tempBWMSHonors3
group by student, stateID, grade, stdType
我还嵌入了一个图像,显示了我临时表的一个例子以及我想要实现的目标(以及我得到的结果 - 但不想要)。 []
答案 0 :(得分:1)
我认为你只想要条件聚合,而不是子查询:
select Max(Counting) as Total, student, stdType,
sum(case when score = '3' then 1 else 0 end) as Score3,
sum(case when score = '4' then 1 else 0 end) as Score4
from #tempBWMSHonors3
group by student, stdType;
注意:如果得分是数字而不是字符串,则不应使用单引号作为常量。