读书人

关于统计的Sql话语

发布时间: 2012-12-28 10:29:05 作者: rapoo

关于统计的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

[其他解释]
引用:
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' a……
这样写了之后,查出来的是一条条的记录啊,而不是统计之后的记录啊。咋回事呢。
[其他解释]
引用:
这样就不抱错,但是不知道你的意图和结构是什么,所以不知道数据是不是你想要的


SQL code?



1234

select o.instrumentName,a.name,sum(t.actualUseNumber) 测样数目,t.sysTime from testTotal t,adminInfo a,order_instrument o where a.id = ……


第一个sql语句:



第二个SQL语句:


加了后面的group by o.instrumentName,t.sysTime 之后显示的是一条条的记录了啊。

表结构其实很简单,
instrutemtId(外键) ,adminId(外键) ,sysTime,actualUseNumber,id(自动增长)
[其他解释]

引用:
你期待的结果是什么?弄出来看看

谢谢。
就是要这样的统计结果啊。
[其他解释]
引用:
试试:


SQL code?



12345678

SELECT NAME , instrumentname , MAX(systime) systime , SUM(测试数目) 测试数目 FROM TB GROUP BY NAME , instrumentname

不行啊,这样的结果和select *出来的结果区别不大啊,就是多了个外键的名字而已、
[其他解释]
你要把你的三个表结构拿出来才行,我这个是单表的
[其他解释]
引用:
你要把你的三个表结构拿出来才行,我这个是单表的

不要sysTime就可以了,因为sysTime是4个不同的值,groupBy的话,所以也就是不同的值了。
[其他解释]
引用:
引用:
你要把你的三个表结构拿出来才行,我这个是单表的
不要sysTime就可以了,因为sysTime是4个不同的值,groupBy的话,所以也就是不同的值了。
所以我用了max,因为看你的数据是取最大的。其实你应该GROUP BY convert(date,systime),还是可以显示的

读书人网 >SQL Server

热点推荐