关于统计的Sql语句
select o.instrumentName,a.name,sum(t.actualUseNumber) 测样数目,t.sysTime
from testTotal t,adminInfo a,order_instrument o
where a.id = t.adminId and o.id = t.instrumentId and sysTime between '2012-10-01' and '2012-12-01'
group by a.name
提示
服务器: 消息 8120,级别 16,状态 1,行 1
列 'o.instrumentName' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 8120,级别 16,状态 1,行 1
列 't.sysTime' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
select a.name,sum(t.actualUseNumber) 测样数目
from testTotal t,adminInfo a,order_instrument o
where a.id = t.adminId and o.id = t.instrumentId and sysTime between '2012-10-01' and '2012-12-01'
group by a.name
这样查询出来是没问题的,
但是我想在查出来的结果里面包含 'o.instrumentName' 't.sysTime' 该怎么改写啊?
[最优解释]
select o.instrumentName,a.name,sum(t.actualUseNumber) 测样数目,t.sysTime from testTotal t,adminInfo a,order_instrument o where a.id = t.adminId and o.id = t.instrumentId and sysTime between '2012-10-01' and '2012-12-01'group by a.name,o.instrumentName,t.sysTime
[其他解释]
这样就不抱错,但是不知道你的意图和结构是什么,所以不知道数据是不是你想要的
select o.instrumentName,a.name,sum(t.actualUseNumber) 测样数目,t.sysTime
from testTotal t,adminInfo a,order_instrument o
where a.id = t.adminId and o.id = t.instrumentId and sysTime between '2012-10-01' and '2012-12-01'
group by o.instrumentName,a.name,t.sysTime
[其他解释]
你期待的结果是什么?弄出来看看
[其他解释]
试试:
SELECT NAME ,
instrumentname ,
MAX(systime) systime ,
SUM(测试数目) 测试数目
FROM TB
GROUP BY NAME ,
instrumentname
[其他解释]
这样写了之后,查出来的是一条条的记录啊,而不是统计之后的记录啊。咋回事呢。
[其他解释]
第一个sql语句:
第二个SQL语句:
加了后面的group by o.instrumentName,t.sysTime 之后显示的是一条条的记录了啊。
表结构其实很简单,
instrutemtId(外键) ,adminId(外键) ,sysTime,actualUseNumber,id(自动增长)
[其他解释]
谢谢。
就是要这样的统计结果啊。
[其他解释]
不行啊,这样的结果和select *出来的结果区别不大啊,就是多了个外键的名字而已、
[其他解释]
你要把你的三个表结构拿出来才行,我这个是单表的
[其他解释]
不要sysTime就可以了,因为sysTime是4个不同的值,groupBy的话,所以也就是不同的值了。
[其他解释]
所以我用了max,因为看你的数据是取最大的。其实你应该GROUP BY convert(date,systime),还是可以显示的