首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

关于统计的Sql话语

2012-12-28 
关于统计的Sql语句select o.instrumentName,a.name,sum(t.actualUseNumber) 测样数目,t.sysTimefrom testT

关于统计的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),还是可以显示的

热点排行