查询求和问题,在线请教!

sufangzhong 2003-11-30 11:25:06
我表结果如下:
table1
ID 分数1 分数2 分数3
1 60 50 90
2 36 56 80
3 78 95 62
现在我要查询每个ID对应地各种分数以及总分数,查询结果用datagrid显示。
我的sql语句如下:select ID,分数1,分数2,分数3,'资金合计'=(sum(isnull(分数1,0))+sum(isnull(分数2,0))+sum(isnull(分数3,0))) from table1 where ID=' '
但是这样老是通不过,我把统计总分的那个去掉,或者另外单独查询都可以得到结果。但是跟前面各种分数一起查询,就老是出错。请教到底该怎么做比较合适?
...全文
85 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
canyqf 2003-12-02
  • 打赏
  • 举报
回复
select ID,标段,规模,资金 from table1,(select sum(规模) 规模合计,sum(资金) 资金合计 from table1 where ID='1') b where ID='1'
eeblsl 2003-12-01
  • 打赏
  • 举报
回复
你可以按下述办法试一下:
1、将数据库tablel的字段设定为 hz,id,分数1,分数2,分数3,hj
2、sql1="update tablel set hj= 分数1+分数2+分数3 "
3、sql2 = "insert into tablel(hz,id,分数1,分数2,分数3,hj) " _
& " select '总计',id," _
& "sum(分数1),sum(分数2),sum(分数3),sum(hj)" _
& " from tablel where id=1 group by id "
或:
& " from tablel group by id "
4、sql3 = "select hz,id,分数1,分数2,分数3,hj from tablel"
sufangzhong 2003-12-01
  • 打赏
  • 举报
回复
谢谢大家,第一个问题我已经搞定了。不过第二个问题我还不会,希望大家继续给予指导,不胜感激。
表结果如下:
table1
ID 标段 规模 资金
1 a 5 500
1 b 8 600
2 e 3 250
1 d 8 1000
查询id=1的全部信息以及规模总和,资金总和。查询的结果要用datagrid显示。
我的sql语句是:select ID,标段,规模,资金,'规模合计'=sum(规模),'资金合计'=sum(资金) from table1 where ID='1' group by ID,标段,规模,资金。但是查询的结果中,资金合计跟规模合计没有执行求和运算。显示的结果是:
ID 标段 规模 资金 规模合计 资金合计
1 a 5 500 5 500
1 b 8 600 8 600
1 d 8 1000 8 1000
不知道该怎么解决,希望大家不吝赐教。
canyqf 2003-12-01
  • 打赏
  • 举报
回复
上面说得不准确,是有聚合函数并有未使用聚合函数的列,未使用聚合函数的列一定要包含于Group By中。
或者如果你的每行的合计栏都是等于所有行所有分数之和的话,可以用一个子查询:
select ID,分数1,分数2,分数3,'资金合计'=
(select sum(isnull(分数1,0))+sum(isnull(分数2,0))+sum(isnull(分数3,0))) from table1 -- where ID=' ' -- 这个where条件看你的情况要不要
)
from table1 where ID=' '
canyqf 2003-12-01
  • 打赏
  • 举报
回复
有聚合函数就一定要Group by
两种方法解决:
1.添加group by
select ID,分数1,分数2,分数3,'资金合计'=(sum(isnull(分数1,0))+sum(isnull(分数2,0))+sum(isnull(分数3,0))) from table1 where ID=' ' group by ID,分数1,分数2,分数3
2.取消聚合函数sum
select ID,分数1,分数2,分数3,'资金合计'=(isnull(分数1,0)+isnull(分数2,0)+isnull(分数3,0)) from table1 where ID=' '
看你要的是那种情况
ajex 2003-11-30
  • 打赏
  • 举报
回复
select s.ID,s.分数1,s.分数2,s.分数3,'资金合计'=t.sumfen
from (select ID,(sum(isnull(分数1,0)+isnull(分数2,0)+(isnull(分数3,0)) as sumfen from table1 ) t inner join table1 s on t.ID=s.ID where ID=' '
ajex 2003-11-30
  • 打赏
  • 举报
回复
依葫芦画瓢嘛.
sufangzhong 2003-11-30
  • 打赏
  • 举报
回复
还有一个类似的问题:
表结果如下:
table1
ID 标段 规模 资金
1 a 5 500
1 b 8 600
2 e 3 250
1 d 8 1000
查询id=1的全部信息以及规模总和,资金总和。查询的结果要用datagrid显示。
我的sql语句是:select ID,标段,规模,资金,'规模合计'=sum(规模),'资金合计'=sum(资金) from table1 where ID='1'。但是老是出错,也不知道哪里错了,希望大家给予指导。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧