当前位置:编程学习 > C#/ASP.NET >>

sql语句问题,求助

比如:
表Table  子段(ID、UserID、instime、valueA、valueB)
数据:
1、1001、2013/12/3 9:11:26、180、290
2、1001、2013/12/3 5:13:26、280、190
3、1001、2013/12/3 13:13:26、180、290
4、1001、2013/12/4 15:13:26、280、190
5、1001、2013/12/5 19:13:26、180、290
6、1001、2013/12/5 9:13:26、280、190
7、1001、2013/12/6 9:13:26、180、290 

查询12月3日到5日这段时间内每天早上6点到晚上22点的数据中的MAX(valueA)、MAX(valueB)、
MIN(valueA)、MIN(valueB) --------------------编程问答-------------------- 亟待解决 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 2 楼 u013139885 的回复:
求助 --------------------编程问答-------------------- 这难道不是一个SQL语句可以完成的事情吗?

比如


select max(xx),min(xx),max(oo),min(oo) from table where time between '' and ''
--------------------编程问答--------------------
引用 4 楼 diaodiaop 的回复:
这难道不是一个SQL语句可以完成的事情吗?

比如


select max(xx),min(xx),max(oo),min(oo) from table where time between '' and ''


不是的。我现在是查询12月3日到5日这段时间内每天早上6点到晚上22点的数据中的MAX(valueA)、MAX(valueB);我还要查询
12月3日到5日这段时间内晚上22点到早上6点的数据中的MAX(valueA)、MAX(valueB)、MIN(valueA)、MIN(valueB)  --------------------编程问答--------------------

select max(valueA),min(valueA),max(valueB),min(valueB) from Table  
where instime>'2013-12-3 06:00:00' and instime<'2013-12-5 20:00:00'
--------------------编程问答--------------------
--这是oracle的

select max(valueA),min(valueA),max(valueB),min(valueB),instime  from
(
select valueA,valueB,to_char(instime,'yyyy-MM-dd') instime from table
where instime>'2013-12-3 06:00:00' and instime<'2013-12-5 20:00:00'
) tab group by instime
--------------------编程问答--------------------

select max(valueA),min(valueA),max(valueB),min(valueB) from test1 
where instime >= '2013-12-03' and instime<='2013-12-05' 
and datename(hh,instime) >= 6 and datename(hh,instime) <= 22
--满足你每天6点到22点的数据

--------------------编程问答-------------------- 我给你个思路把,你增加一列
然后将每行数据的时间天,不包含小时很分钟插入到这列中。
在group by这个新列,按天来分组,明白不? --------------------编程问答-------------------- instime 拆分成两列,一个(insdate)只记录日期,另一个(instime)只记录时间


select max(valueA),min(valueA),max(valueB),min(valueB) from test1 
where insdate >= '2013-12-03' and insdate<='2013-12-05' 
and instime >= 600 and instime <= 2200
group by insdate
--------------------编程问答--------------------
引用 10 楼 u010793151 的回复:
instime 拆分成两列,一个(insdate)只记录日期,另一个(instime)只记录时间


select max(valueA),min(valueA),max(valueB),min(valueB) from test1 
where insdate >= '2013-12-03' and insdate<='2013-12-05' 
and instime >= 600 and instime <= 2200
group by insdate

跟我的想法一样嘛 --------------------编程问答--------------------
引用 11 楼 qiananlipin 的回复:
Quote: 引用 10 楼 u010793151 的回复:

instime 拆分成两列,一个(insdate)只记录日期,另一个(instime)只记录时间


select max(valueA),min(valueA),max(valueB),min(valueB) from test1 
where insdate >= '2013-12-03' and insdate<='2013-12-05' 
and instime >= 600 and instime <= 2200
group by insdate

跟我的想法一样嘛


对呀,但是你没写代码,呵呵 --------------------编程问答-------------------- 除
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,