SQL如何根据组的现有列计数为新列创建值?

时间:2015-12-08 21:14:40

标签: mysql sql count rank

我有一个临时表,我正在阅读,我想查看其中一个只有两个等级值的列 - 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

我还嵌入了一个图像,显示了我临时表的一个例子以及我想要实现的目标(以及我得到的结果 - 但不想要)。 [enter image description here]

1 个答案:

答案 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;

注意:如果得分是数字而不是字符串,则不应使用单引号作为常量。