2017-06-01 70 views
0

我有一个sql查询返回给我这个结果。sql 2014组通过

StudCount GPA Cale_  Year 
1   2.0 - 2.49  2010 
1   2.5 - 2.99  2014 
1   3.0 - 3.49  2003 
1   3.0 - 3.49  2010 
1   3.0 - 3.49  2013 
1   3.5 - 3.99  2006 
2   4.5 - 5.00  2010 

现在我想再多列一栏,应该显示一年级学生的人数。这意味着2010年4名学生应该来。这个怎么做?

回答

1

这是你在找什么?

drop table if exists dbo.Students; 

create table dbo.Students (
StudCount int 
, GPACale_ varchar(100) 
, Year int 
); 


insert into dbo.Students (StudCount, GPACale_, Year) 
values (1, '2.0 - 2.49', 2010) 
, (1, '2.5 - 2.99', 2014) 
, (1, '3.0 - 3.49', 2003) 
, (1, '3.0 - 3.49', 2010) 
, (1, '3.0 - 3.49', 2013) 
, (1, '3.5 - 3.99', 2006) 
, (2, '4.5 - 5.00', 2010) 


select 
* 
, sum(s.StudCount) over (partition by s.Year order by s.Year) as Sum 
from dbo.Students s 
0

使用带有GROUP BYSUM聚合函数的Year

SELECT Year, SUM(StudCount) 
FROM [YourTable] 
GROUP BY Year 
+0

上面的结果我通过加入多个列来获得。不是从一张表格中输入 –

+2

原始问题中没有足够的信息用于除通用答案以外的任何其他信息。这两个呈现的答案都可以工作,但是如果不知道您的实际查询以了解哪些列表正在使用,我们就无法提供与您想要实现的查询完全匹配的查询。发布产生结果的实际查询总是一个好主意! –

+0

@Dave,我们可以在没有看到它的情况下包装他的查询,不是吗? 'SELECT * FROM(/ * hisqueryhere * /)AS T'。当然,提供可能会有所帮助,并且在某些情况下(*虽然不是这个*)是必要的。 – KtX2SkD