如有表:a,b
a表字段:cost,...
b字段:total,type...
我想将满足条件type=true的total求和值作为一个字段,type=false的total求和值作为另一个字段,应如何写?select SUM(a.Cost),SUM( iif ( b.Type=True , b.Totai , 0 )) as total1,
sum(iif( b.Type=false , b.total , 0 )) as total2 from a,b
可以,但求出的sum和不对,不是每个表对应字段的总值,这是为什么后来用简化试了一下
select sum(a.cost),sum(b.total) from a,b
这样的sql语句不成立?单表求和可以,两个表好像分别求和就不可以了??那要实现我的条件:查各个表的某字段求和应如何写?请高手指点一下,谢谢
a表字段:cost,...
b字段:total,type...
我想将满足条件type=true的total求和值作为一个字段,type=false的total求和值作为另一个字段,应如何写?select SUM(a.Cost),SUM( iif ( b.Type=True , b.Totai , 0 )) as total1,
sum(iif( b.Type=false , b.total , 0 )) as total2 from a,b
可以,但求出的sum和不对,不是每个表对应字段的总值,这是为什么后来用简化试了一下
select sum(a.cost),sum(b.total) from a,b
这样的sql语句不成立?单表求和可以,两个表好像分别求和就不可以了??那要实现我的条件:查各个表的某字段求和应如何写?请高手指点一下,谢谢
解决方案 »
- 请问:VB6.0下水晶报表如何动态连接数据源?
- VB(winfrom)datagrid中某单元格的背景色
- SSTAB控件與VALIDATE事件的問題﹐不知道是不是微軟的一個BUG!
- 请问哪位有setup factory,麻烦给我发一个,谢谢!
- 如何判斷產品A.產品B....在一個時間段被人使用過,在另一個時間段的使用情況?
- 请问报表控件的Refrash方法是起什么作用的???
- 大家帮我看一下,用vb作图的简单问题?(200分)
- 高分求教(做一个非常简单的记事本程序)我急啊!
- 请高手帮忙,如何用VB6连接设有密码的access数据库!
- 怎样得到汉字的gb2321的编码??
- 没有找到DBGrid
- 如何完全删除记录呢?
你的AB两表有什么关联!?
a表的id和b表的id相等,但是每个表的记录数都不一样,
to小健:我没有用b表的条件去找a表的记录,找的是b表的记录啊那查各个表的某字段求和应如何写?
select sum(total) from b where type=true
select sum(total) from b where type=false
只能分成三句写?那不是要打开三个记录集?如果我有5张表要求和统计,那不是要有很多个记录集打开?有没有简单点的方法?谢谢
B表中是交的各种费用。显示。B表中还应多包含一个字段信息,标识交费记录属于哪辆车。比如可以车牌号,作为它的外键。。
select sum(total) from b where type=true
select sum(total) from b where type=false
可以合并起来,因为都是对同一张表,如果要把a何b合起来查,那a和b就应该有关系,就拿你的比喻,这两个表里出来的数据至少也应该都是对应你那辆车吧
to大头河马:“车是交各种费用。但是交的费的是属于哪辆车的,这必须有对应关系。。”
这个关系有,每张表都有一个id标识,就像你所说的标识交费记录属于哪辆车
但问题是比如a表是记录这辆车每次交的保养费,b表是这辆车记录每次用的买路费,这些费用是没有关系的,我先假定是a,b表中记录的是同一辆车的费用记录,只是不同的费用记录,那我要算的总的买路费,总的保养费,就只能单独从各自的表中求和?那如果还有什么油费表,维修费表,那不是都要一个一个求,不是很麻烦?打开一张表要一个记录集,好几张表就要打开好几个记录集才能取到所有的费用?
如果我没有符合条件的记录为什么还会出现recordcount=1 的现象?但rs.fields(0)为null
如果select total 就不会出现这个问题,这是为什么?还请各位再赐教!谢谢
from
(
select sum(cost) t1,0 as t2,0 as t3 from a
union all
select 0,SUM(iif(b.Type=True,b.Total,0)),
sum(iif(b.Type=false,b.total,0))
from b
)
其实楼主就想返回一条记录,这条记录中的各个费用字段在不同的表中。
还可以这样写:select t1,t2,t3
from
(
select sum(cost) t1,0 as t2,0 as t3 from a
union all
select 0 as t1,sum(total) as t2 ,0 as t3 from b where type=true
union all
select 0 as t1,0,as t2,sum(total) as t3 from b where type=false
) as TotalTable其中totaltable 最后的每一个字段对应一表中数据和,多加一项统计就在()中加一个
union all +统计sql。
按楼主的意思是求总和,并没有分组,所以()内的统计sql都返回一条记录的,所以totaltable中各个字段不用加sum了,在字段中加函数运算不如分成两个sql来写,这样运效率要高一些。
按照小马哥和andy的方法调试,成功!感谢。