刚有个项目,需要查询水位数据表中的水位信息,及查询降雨量表中统计时段降雨量的数据,以计算出日降雨量,而且时段是前一天8时到后一天8时总共24个小时。

两个子查询:

1、根据当前时间判断统计前天8时到今天8时还是大前天8时到前天8时的时段雨量;

select STCD,SUM(DRP) as drp2
from Jialiang.dbo.ST_PPTN_R
where
STCD=''and
TM>case
when Datename(hour,GetDate())>=8 then CONVERT(varchar(100), GETDATE()-1, 23)+' 8:00' else CONVERT(varchar(100), GETDATE()-2, 23)+' 8:00' end
and
TM<case
when Datename(hour,GetDate())>=8 then CONVERT(varchar(100), GETDATE(), 23)+' 8:00' else CONVERT(varchar(100), GETDATE()-1, 23)+' 8:00'end
GROUP BY STCD

2、查询最新的水位数据

select STCD,Z
from Jialiang.dbo.ST_RIVER_R
where STCD='' and TM=(select MAX(TM) from Jialiang.dbo.ST_RIVER_R where STCD='')

最后把这两个查询结果根据设备编码联合起来

select a.Z,b.drp2 from(select STCD,SUM(DRP) as drp2
from Jialiang.dbo.ST_PPTN_R
where
STCD=''and
TM>case
when Datename(hour,GetDate())>=8 then CONVERT(varchar(100), GETDATE()-1, 23)+' 8:00' else CONVERT(varchar(100), GETDATE()-2, 23)+' 8:00' end
and
TM<case
when Datename(hour,GetDate())>=8 then CONVERT(varchar(100), GETDATE(), 23)+' 8:00' else CONVERT(varchar(100), GETDATE()-1, 23)+' 8:00'end
GROUP BY STCD) as b,
(select STCD,Z
from Jialiang.dbo.ST_RIVER_R
where STCD='' and TM=(select MAX(TM) from Jialiang.dbo.ST_RIVER_R where STCD='')) as a
where a.STCD=b.STCD

本文参考了

SQL获取当前时间的方法:http://www.cnblogs.com/weiqt/articles/2040800.html

DateName()还可以获得到小时、时间、秒、星期几、第几周,分别如下:

Select Datename(hour,GetDate())
Select Datename(minute,GetDate())
Select Datename(second,GetDate())
Select Datename(weekDay,GetDate())
Select Datename(week,GetDate())

使用Convert()函数:

select convert(char(10),GetDate(),120) as Date

* 第3个参数就是用来设置日期类型数据的显示样式的,下面介绍几种样式的参数:

100   mm dd yyyy

101   mm/dd/yyyy

102   yyyy.mm.dd

103   dd/mm/yyyy

106   dd mm yyyy

108   hh:mi:ss(时间)

111   yyyy/mm/dd

112   yyyymmdd

120   yyyy-mm-dd hh:mm:ss

23     yyyy-mm-dd

1 SELECT CONVERT(varchar(100), GETDATE(), 0) 05 9 2011 9:12AM
2 SELECT CONVERT(varchar(100), GETDATE(), 1) 05/09/11
3 SELECT CONVERT(varchar(100), GETDATE(), 2) 11.05.09
4 SELECT CONVERT(varchar(100), GETDATE(), 3) 09/05/11
5 SELECT CONVERT(varchar(100), GETDATE(), 4) 09.05.11
6 SELECT CONVERT(varchar(100), GETDATE(), 5) 09-05-11
7 SELECT CONVERT(varchar(100), GETDATE(), 6) 09 05 11
8 SELECT CONVERT(varchar(100), GETDATE(), 7) 05 09, 11
9 SELECT CONVERT(varchar(100), GETDATE(), 8) 09:13:14
10 SELECT CONVERT(varchar(100), GETDATE(), 9) 05 9 2011 9:13:14:670AM
11 SELECT CONVERT(varchar(100), GETDATE(), 10) 05-09-11
12 SELECT CONVERT(varchar(100), GETDATE(), 11) 11/05/09
13 SELECT CONVERT(varchar(100), GETDATE(), 12) 110509
14 SELECT CONVERT(varchar(100), GETDATE(), 13) 09 05 2011 09:13:14:670
15 SELECT CONVERT(varchar(100), GETDATE(), 14) 09:13:14:670
16 SELECT CONVERT(varchar(100), GETDATE(), 20) 2011-05-09 09:13:14
17 SELECT CONVERT(varchar(100), GETDATE(), 21) 2011-05-09 09:13:14.670
18 SELECT CONVERT(varchar(100), GETDATE(), 22) 05/09/11 9:15:33 AM
19 SELECT CONVERT(varchar(100), GETDATE(), 23) 2011-05-09
20 SELECT CONVERT(varchar(100), GETDATE(), 24) 09:15:33
21 SELECT CONVERT(varchar(100), GETDATE(), 25) 2011-05-09 09:15:33.140
22 SELECT CONVERT(varchar(100), GETDATE(), 100) 05 9 2011 9:15AM
23 SELECT CONVERT(varchar(100), GETDATE(), 101) 05/09/2011
24 SELECT CONVERT(varchar(100), GETDATE(), 102) 2011.05.09
25 SELECT CONVERT(varchar(100), GETDATE(), 103) 09/05/2011
26 SELECT CONVERT(varchar(100), GETDATE(), 104) 09.05.2011
27 SELECT CONVERT(varchar(100), GETDATE(), 105) 09-05-2011
28 SELECT CONVERT(varchar(100), GETDATE(), 106) 09 05 2011
29 SELECT CONVERT(varchar(100), GETDATE(), 107) 05 09, 2011
30 SELECT CONVERT(varchar(100), GETDATE(), 108) 09:16:38
31 SELECT CONVERT(varchar(100), GETDATE(), 109) 05 9 2011 9:16:38:543AM
32 SELECT CONVERT(varchar(100), GETDATE(), 110) 05-09-2011
33 SELECT CONVERT(varchar(100), GETDATE(), 111) 2011/05/09
34 SELECT CONVERT(varchar(100), GETDATE(), 112) 20110509
35 SELECT CONVERT(varchar(100), GETDATE(), 113) 09 05 2011 09:17:19:857
36 SELECT CONVERT(varchar(100), GETDATE(), 114) 09:17:19:857
37 SELECT CONVERT(varchar(100), GETDATE(), 120) 2011-05-09 09:17:19
38 SELECT CONVERT(varchar(100), GETDATE(), 121) 2011-05-09 09:17:19.857
39 SELECT CONVERT(varchar(100), GETDATE(), 126) 2011-05-09T09:17:19.857
40 SELECT CONVERT(varchar(100), GETDATE(), 130) 6 ????? ??????? 1432 9:17:19:857AM
41 SELECT CONVERT(varchar(100), GETDATE(), 131) 6/06/1432 9:17:19:857AM

SQL case when.. else..end 用法:

WHERE
WATRDJ>= case when P05_TRDJ_FM is not null then V_TRDJ_FM else WATRDJ end and
WATRDJ<= case when P05_TRDJ_TO is not null then V_TRDJ_TO else WATRDJ end

SQL联合查询两个表方法:

同一实例下的数据库表是可以直接引用的,只要加上数据库名就可以了
select  a.* from A.dbo.AA as a,B.dbo.AA  as b where a.col1 = b.col1 and a.col2 <> b.col2

最新文章

  1. /etc/ppp/chap-secrets
  2. BZOJ4698: Sdoi2008 Sandy的卡片
  3. Qt——设计颜色编辑器
  4. 与你相遇好幸运,Sails.js安装
  5. django-south
  6. VB6 仿.netWinfrom控件 Anchor属性类
  7. Pig Run on Hadoop, V1.0
  8. 【SNMP】Linux系统下安装net-snmp
  9. rop框架签名功能控制
  10. Sublime字体设置
  11. C/C++中的++a和a++
  12. mysql自动备份
  13. 初识DJango——MTV模型
  14. 使用CXF和spring搭建webService服务
  15. flask error
  16. 使用Node.js的Express框架进行文件上传
  17. Linux(以RHEL7为例)下添加工作区的方法|| The Way To Add Workspace On Linux
  18. Java并发编程笔记之PriorityBlockingQueue源码分析
  19. reveal 使用注意事项
  20. QPushButton 控制两种状态

热门文章

  1. javascript type操作
  2. Android—Work—1day
  3. nyoj 142, poj 1039 ,hdu 1454 管道问题
  4. jQuery MiniUI开发系列之:UI和数据分离
  5. 【解决】SharePoint 2013 当鼠标悬停在用户名称上时页面会崩溃
  6. SQL存储过程-新增和修改,参数Xml数据类型
  7. 通过Windows组策略限制证书组织流氓软件的安装运行
  8. PHP5.6.15连接Sql Server 2008配置方案
  9. python模块之subprocess
  10. android开发--多线程