SQL Server查询符合条件的某个字段的总和及明细

时间:2022-04-03 15:02:28
假如有如下表table1
--------------------
name    age    sex    course     score
张三      17       男       数学           88
李四      16       女       语文           78
张三      17       男       英语           58
王二      18       男       语文           92
李四      16       女       数学           80
--------------------
我要查询course='数学' and age=17的分数总和,并且显示每一条的详细
这个怎么在一句里执行出来?
试过group by只能根据一个字段分组,我这里是根据查询的结果作为一组。
如何查询其结果的score总和及其每一条的明细?
虚心请教

6 个解决方案

#1


最后想得到什么样一个结果,是下边这样的么?
name    age    sex    course     score          all
张三      17       男       数学           88         146

#2


引用 1 楼 sinat_28984567 的回复:
最后想得到什么样一个结果,是下边这样的么?
name    age    sex    course     score          all
张三      17       男       数学           88         146
是这样的,就是将下面的2句合成1句:
select * from table1 where course='数学' and age =17
select sum(score) from table1 where course='数学' and age =17

#3


引用 2 楼 u011981242 的回复:
Quote: 引用 1 楼 sinat_28984567 的回复:

最后想得到什么样一个结果,是下边这样的么?
name    age    sex    course     score          all
张三      17       男       数学           88         146
是这样的,就是将下面的2句合成1句:
select * from table1 where course='数学' and age =17
select sum(score) from table1 where course='数学' and age =17

 select *,(select sum(score) from table1 where course='数学' and age =17)AS all from table1 where course='数学' and age =17

#4


引用 3 楼 sinat_28984567 的回复:
Quote: 引用 2 楼 u011981242 的回复:

Quote: 引用 1 楼 sinat_28984567 的回复:

最后想得到什么样一个结果,是下边这样的么?
name    age    sex    course     score          all
张三      17       男       数学           88         146
是这样的,就是将下面的2句合成1句:
select * from table1 where course='数学' and age =17
select sum(score) from table1 where course='数学' and age =17

 select *,(select sum(score) from table1 where course='数学' and age =17)AS all from table1 where course='数学' and age =17
很不错,成功了。感谢感谢。

#5


引用 3 楼 sinat_28984567 的回复:
Quote: 引用 2 楼 u011981242 的回复:

Quote: 引用 1 楼 sinat_28984567 的回复:

最后想得到什么样一个结果,是下边这样的么?
name    age    sex    course     score          all
张三      17       男       数学           88         146
是这样的,就是将下面的2句合成1句:
select * from table1 where course='数学' and age =17
select sum(score) from table1 where course='数学' and age =17

 select *,(select sum(score) from table1 where course='数学' and age =17)AS all from table1 where course='数学' and age =17


你确定是对的?

#6


引用 5 楼 dr592112441 的回复:
Quote: 引用 3 楼 sinat_28984567 的回复:

Quote: 引用 2 楼 u011981242 的回复:

Quote: 引用 1 楼 sinat_28984567 的回复:

最后想得到什么样一个结果,是下边这样的么?
name    age    sex    course     score          all
张三      17       男       数学           88         146
是这样的,就是将下面的2句合成1句:
select * from table1 where course='数学' and age =17
select sum(score) from table1 where course='数学' and age =17

 select *,(select sum(score) from table1 where course='数学' and age =17)AS all from table1 where course='数学' and age =17


你确定是对的?

按照楼主的要求应该是对的

#1


最后想得到什么样一个结果,是下边这样的么?
name    age    sex    course     score          all
张三      17       男       数学           88         146

#2


引用 1 楼 sinat_28984567 的回复:
最后想得到什么样一个结果,是下边这样的么?
name    age    sex    course     score          all
张三      17       男       数学           88         146
是这样的,就是将下面的2句合成1句:
select * from table1 where course='数学' and age =17
select sum(score) from table1 where course='数学' and age =17

#3


引用 2 楼 u011981242 的回复:
Quote: 引用 1 楼 sinat_28984567 的回复:

最后想得到什么样一个结果,是下边这样的么?
name    age    sex    course     score          all
张三      17       男       数学           88         146
是这样的,就是将下面的2句合成1句:
select * from table1 where course='数学' and age =17
select sum(score) from table1 where course='数学' and age =17

 select *,(select sum(score) from table1 where course='数学' and age =17)AS all from table1 where course='数学' and age =17

#4


引用 3 楼 sinat_28984567 的回复:
Quote: 引用 2 楼 u011981242 的回复:

Quote: 引用 1 楼 sinat_28984567 的回复:

最后想得到什么样一个结果,是下边这样的么?
name    age    sex    course     score          all
张三      17       男       数学           88         146
是这样的,就是将下面的2句合成1句:
select * from table1 where course='数学' and age =17
select sum(score) from table1 where course='数学' and age =17

 select *,(select sum(score) from table1 where course='数学' and age =17)AS all from table1 where course='数学' and age =17
很不错,成功了。感谢感谢。

#5


引用 3 楼 sinat_28984567 的回复:
Quote: 引用 2 楼 u011981242 的回复:

Quote: 引用 1 楼 sinat_28984567 的回复:

最后想得到什么样一个结果,是下边这样的么?
name    age    sex    course     score          all
张三      17       男       数学           88         146
是这样的,就是将下面的2句合成1句:
select * from table1 where course='数学' and age =17
select sum(score) from table1 where course='数学' and age =17

 select *,(select sum(score) from table1 where course='数学' and age =17)AS all from table1 where course='数学' and age =17


你确定是对的?

#6


引用 5 楼 dr592112441 的回复:
Quote: 引用 3 楼 sinat_28984567 的回复:

Quote: 引用 2 楼 u011981242 的回复:

Quote: 引用 1 楼 sinat_28984567 的回复:

最后想得到什么样一个结果,是下边这样的么?
name    age    sex    course     score          all
张三      17       男       数学           88         146
是这样的,就是将下面的2句合成1句:
select * from table1 where course='数学' and age =17
select sum(score) from table1 where course='数学' and age =17

 select *,(select sum(score) from table1 where course='数学' and age =17)AS all from table1 where course='数学' and age =17


你确定是对的?

按照楼主的要求应该是对的