注册 登录
编程论坛 ASP技术论坛

有关sql的问题!

zhongx 发布于 2007-12-17 21:21, 2270 次点击
sql="select sum(jj) as jj,ph from aa group by ph"

以上这句sql已经可以把相同的ph(编号)的jj(金额)统计出来了,

可不可以改成:
把相同的ph(编号)的jj(金额)和sl(数量)统计以及把dj,mq直接读出出来呢?

会的请帮忙,谢谢!

可不可以用 in 或 union 呢?

[[italic] 本帖最后由 zhongx 于 2007-12-18 19:51 编辑 [/italic]]
14 回复
#2
zhongx2007-12-18 19:51
可不可以用 in 或 union 呢?
#3
yms1232007-12-18 20:38
select sum(jj) as jj,sum(sl) as sltotal,ph,dj,mp from aa group by ph
不知道sql能不能用两次聚合函数,楼主可以试试看。
#4
letla2007-12-18 20:44
sql="select sum(GZ_BZ) as GZ_BZxin,sum(GZ_JB) as GZ_JBxin,sum(GZ_QQ) as GZ_QQxin,sum(GZ_GL) as GZ_GLxin,sum(GZ_YB) as GZ_YBxin,sum(GZ_TX) as GZ_TXxin,sum(GZ_WC) as GZ_WCxin,sum(GZ_WS) as GZ_WSxin,sum(GZ_JT) as GZ_JTxin,sum(GZ_XJ1) as GZ_XJ1xin,sum(GZ_EL) as GZ_ELxin,sum(GZ_ZA) as GZ_ZAxin,sum(GZ_FK) as GZ_FKxin,sum(GZ_XJ2) as GZ_XJ2xin,sum(GZ_SF) as GZ_SFxin from GZ_IN where GZ_BM = '" & Request.QueryString("bm") & "' and GZ_TID = '" & Request.QueryString("ti") & "'"
以上是我的薪资计算代码。。。楼主可以参考一下。。。
#5
madpbpl2007-12-18 23:15
select sum(jj) as jjtotal,sum(sl) as sltotal,ph,min(dj),min(mp) from aa group by ph
or
select sum(jj) as jjtotal,sum(sl) as sltotal,ph,mxa(dj),max(mp) from aa group by ph
#6
zhongx2007-12-19 22:05
原帖由 [bold][underline]yms123[/underline][/bold] 于 2007-12-18 20:38 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1153311&ptid=193020][/url]
select sum(jj) as jj,sum(sl) as sltotal,ph,dj,mp from aa group by ph
不知道sql能不能用两次聚合函数,楼主可以试试看。


执行后产生了以下的提示:

Microsoft JET Database Engine '80040e21'

试图执行的查询中不包含作为合计函数一部分的特定表达式 'dj' 。
#7
zhongx2007-12-19 22:30
原帖由 [bold][underline]madpbpl[/underline][/bold] 于 2007-12-18 23:15 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1153438&ptid=193020][/url]
select sum(jj) as jjtotal,sum(sl) as sltotal,ph,min(dj),min(mp) from aa group by ph
or
select sum(jj) as jjtotal,sum(sl) as sltotal,ph,mxa(dj),max(mp) from aa group by ph


第一句运行后的提示:
Microsoft JET Database Engine '80040e10'

至少一个参数没有被指定值

第二句运行后的提示:
#8
zhongx2007-12-19 23:08
原帖由 [bold][underline]madpbpl[/underline][/bold] 于 2007-12-18 23:15 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1153438&ptid=193020][/url]
select sum(jj) as jjtotal,sum(sl) as sltotal,ph,min(dj),min(mp) from aa group by ph
or
select sum(jj) as jjtotal,sum(sl) as sltotal,ph,mxa(dj),max(mp) from aa group by ph



madpbpl 考虑得非常周到, mq 取其  max 或 min , dj 取其 max 或 min ,因为 mq 或 dj 会有多条记录 又或者不相同的记录,
而取其一.
但运行时还是有问题, 我把其中的 total 去掉,统计就正确了,但不能获得 mq和dj的数据.
请教madpbpl怎么样才能获得 mq和dj的数据?谢谢!
#9
madpbpl2007-12-20 16:26
不看懂楼主的意思,我这是两条sql语句,不是一条,哪来的total?你所谓的mq在dj是最小还是最大,还是另有所指?
#10
zhongx2007-12-20 19:21
原帖由 [bold][underline]madpbpl[/underline][/bold] 于 2007-12-20 16:26 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1155756&ptid=193020][/url]
不看懂楼主的意思,我这是两条sql语句,不是一条,哪来的total?你所谓的mq在dj是最小还是最大,还是另有所指?


我是分开测试的,你第一条取最小的,第二条取最大的.
mq和dj我意思取ph相同的任何其中一条的都可以,因为当ph相同的时候它的mq和dj所记录的内基本是相同的.

select sum(jj) as jjtotal,sum(sl) as sltotal,ph,min(dj),min(mp) from aa group by ph
or
select sum(jj) as jjtotal,sum(sl) as sltotal,ph,mxa(dj),max(mp) from aa group by ph

哪来的total? 这个total是指上面红色的部分.
#11
madpbpl2007-12-20 19:25
我是用jjtotal表示jj的总和,用sltotal代表sl的总和,
第二句我有个语法错误,手误,不好意思,应该是
select sum(jj) as jjtotal,sum(sl) as sltotal,ph,max(dj),max(mp) from aa group by ph

max写成mxa了
这样运行还有错吗?
#12
zhongx2007-12-20 20:27
原帖由 [bold][underline]madpbpl[/underline][/bold] 于 2007-12-20 19:25 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1156038&ptid=193020][/url]
我是用jjtotal表示jj的总和,用sltotal代表sl的总和,
第二句我有个语法错误,手误,不好意思,应该是
select sum(jj) as jjtotal,sum(sl) as sltotal,ph,max(dj),max(mp) from aa group by ph

max写成mxa了
这样运行 ...

=================================================
Microsoft JET Database Engine '80040e10'

至少一个参数没有被指定值
===================================================
其实还是未能读取mq和dj
改成:group by ph,mq 这样就会读取mq,但不能读取dj
#13
madpbpl2007-12-20 20:36
那就改成group by ph,mq,dj
但是可能没分组。
还少个参数?哪个字段我搞错了,楼主可以看一下哪个字段没有的。
#14
zhongx2007-12-20 21:00
改成group by ph,mq,dj是不可以的,我试过了.
还少个参数?是使用了max ,去掉就没有了.

有没有其它办法实现呢?
#15
madpbpl2007-12-20 23:28
干脆你列一下表吧,列出你的条件和需求,我看看应该怎么实现。
没搞懂dj和哪个max冲突了
1