数据库统计问题
表中字段名有"name" 和"num",name中有不同的人名(有重复),如何统计出其中一个人的所有num之和?
表的结构大致:
name num
a 2
b 4
c 3
a 3
问题点数:20、回复次数:23Top
1 楼dh20156(风之石)回复于 2005-01-30 23:06:41 得分 0
select [name],sum(num) as num from [table] group by [name]Top
2 楼jfu(谁动了我的奶酪)回复于 2005-01-30 23:13:55 得分 0
num之和怎么表示出来?Top
3 楼dh20156(风之石)回复于 2005-01-30 23:32:16 得分 0
rs("name")
rs("num")Top
4 楼jfu(谁动了我的奶酪)回复于 2005-01-30 23:50:53 得分 0
这里,我是想显示某一个人的num之和,怎么写?Top
5 楼dh20156(风之石)回复于 2005-01-30 23:58:25 得分 0
上面那条SQL语句已经将表中所有人的NUM之和求出来了,你要求某一个人的话这样:
select sum(num) as num from [table] where [name]='要查的人'Top
6 楼jfu(谁动了我的奶酪)回复于 2005-01-31 00:20:19 得分 0
<%
jiabanren=request("x0jiabanren") //输入的查询对象
time1=request("x0starttime") // 查询日期
time2=request("x0endtime") //查询日期
dim conn
dim connstr
on error resume next
Connstr="DBQ="+server.mappath("js.mdb")+";DRIVER=Microsoft Access Driver (*.mdb);DriverId=25;FIL=MS Access; ImplicitCommitSync=Yes;MaxBufferSize=512;MaxScanRows=8;PageTimeout=5; SafeTransactions=0;Threads=3;UserCommitSync=Yes;"
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open connstr
Set rs = Server.CreateObject("ADODB.Recordset")
sql="select sum(jbhour) as jbhour from jiaban where jiabaner='"& jiabanren &"' and riqi between '"&time1&"' and '"&time2&"' "
%>
<% response.write""& jiabanren &"<br>"
response.write""&time1&"<br>"
response.write""&time2&"<br>"
%><br>
<%=rs("jbhour")%> //没任何显示,怎么回事?
数据库表中jbhour是加班时间字段名,jiabaner是加班人姓名字段 riqi是加班日期字段名
response.write显示的是对的,就是<%=rs("jbhour")%>没有任何显示,这是什么问题呢?Top
7 楼dh20156(风之石)回复于 2005-01-31 00:38:13 得分 0
那就是没有合适的记录啊。还有,time1要减1才对time1 = cdate(time1) - 1Top
8 楼dh20156(风之石)回复于 2005-01-31 00:42:23 得分 0
SORRY,是time2要加1,糊涂了。 ^_^Top
9 楼jfu(谁动了我的奶酪)回复于 2005-01-31 00:43:01 得分 0
记录是有的!我记录中的加班时间是2005-1-30
我查询的是time1:2005-1-28到time2:2005-2-3
是不是我哪里写的不对?
between '"&time1&"' and '"&time2&"' "和sum(jbhour) as jbhour 有没有问题?
Top
10 楼dh20156(风之石)回复于 2005-01-31 01:16:01 得分 0
你的是ACCESS?那时间就不能用单引号了
between #"&time1&"# and #"&time2&"#Top
11 楼jfu(谁动了我的奶酪)回复于 2005-01-31 07:41:19 得分 0
换了,还是不行 :(Top
12 楼dh20156(风之石)回复于 2005-01-31 09:28:06 得分 0
不会吧?语句错不错?Top
13 楼abcwyy(花无泪)回复于 2005-01-31 10:30:40 得分 0
看看数据类型有没有错啊?Top
14 楼jfu(谁动了我的奶酪)回复于 2005-01-31 11:38:34 得分 0
语句都在上面贴了呀!
riqi的数据类型我选的是文本,改选为日期类型也不行,我数据库表中riqi数据是:2005-1-30
<%=rs("jbhour")%>就是没输出,哪里有问题?Top
15 楼jfu(谁动了我的奶酪)回复于 2005-01-31 11:47:14 得分 0
我直接把查询的时间换成具体时间,<%=rs("jbhour")%>也没输出
sql="select sum(jbhour) as jbhour from jiaban where jiabaner='"& jiabanren &"' and riqi between between #2005-1-20# and #2005-2-3# "
哪里不对??数据库是accessTop
16 楼dh20156(风之石)回复于 2005-01-31 12:26:23 得分 0
你两个查询条件一个一个写来测试一下,先不加时间限制,单查名字先 ^_^Top
17 楼jfu(谁动了我的奶酪)回复于 2005-01-31 12:34:09 得分 0
上面我贴的就是只查姓名的呀!
sql="select sum(jbhour) as jbhour from jiaban where jiabaner='徐凡' and riqi between #2005-01-20# and #2005-02-03# "
这样把条件都定了,<%=rs("jbhour")%>还是没输出
我的数据库表结构
id jiabaner riqi jbhour
1 徐凡 2005-1-30 2
.......
riqi是日期时间型,jbhour是数字型Top
18 楼dh20156(风之石)回复于 2005-01-31 15:46:25 得分 19
帮你测试了一下,问题在与ACCESS不支持AS以后的名称与字段名称相同,也就是你sum(jbhour) as jbhour这里会出错。
TRY:
<!--#include file="conn.asp"-->
<% sql="select sum(jbhour) as jbsj from jiaban where jiabaner='徐凡' and riqi between #2005-1-1# and #2005-2-10#"
Set rs=Server.CreateObject("Adodb.Recordset")
rs.open sql,conn,1,1
If Not rs.eof then
response.write rs("jbsj")
end if
rs.close
Set rs=Nothing
conn.close
Set conn=Nothing %>Top
19 楼jfu(谁动了我的奶酪)回复于 2005-02-01 12:39:45 得分 0
非常感谢风之石!!
还有一个小问题:response.write rs("jbsj")能显示出加班的时间数
但是<%=rs("jbsj")%>怎么就显示不出来呢?Top
20 楼chucb(chucb)回复于 2005-02-01 12:54:21 得分 1
<%=rs("jbsj")%>要独占一行Top
21 楼jfu(谁动了我的奶酪)回复于 2005-02-01 18:06:12 得分 0
<%=rs("jbsj")%>要独占一行也没用呀,还是没显示!:(
Top
22 楼dh20156(风之石)回复于 2005-02-01 19:37:24 得分 0
TRY:
<!--#include file="conn.asp"-->
<% sql="select sum(jbhour) as jbsj from jiaban where jiabaner='徐凡' and riqi between #2005-1-1# and #2005-2-10#"
Set rs=Server.CreateObject("Adodb.Recordset")
rs.open sql,conn,1,1
If Not rs.eof then %>
<%=rs("jbsj")%>
<% end if
rs.close
Set rs=Nothing
conn.close
Set conn=Nothing %>Top
23 楼jfu(谁动了我的奶酪)回复于 2005-02-01 19:43:47 得分 0
感谢,感谢!这次分设定得太少,请别介意!以后一定多加分!Top




