扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
楼主啊,你这SQL写得也太复杂了,为何不用 UPDATE INNER JOIN ON 的方式实现呢?
成都创新互联公司长期为上1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为四子王企业提供专业的成都做网站、成都网站建设、成都外贸网站建设,四子王网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
SQL语句如下:
update
count_table c inner join
(select count(*) cout,cust_id from alarm_table
where
to_days(alarm_date) = to_days(now())
group by cust_id) z
on c.cust_id = z.cust_id
set
c.alarm_count=z.cout,c.date=current_date
where
c.cust_id = z.cust_id;
参考一下
TO_DATE格式(以时间:2007-11-02 13:45:25为例)
1、日期和字符转换函数用法(to_date,to_char)
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期转化为字符串
select to_char(sysdate,'yyyy') as nowYear from dual; //获取时间的年
select to_char(sysdate,'mm') as nowMonth from dual; //获取时间的月
select to_char(sysdate,'dd') as nowDay from dual; //获取时间的日
select to_char(sysdate,'hh24') as nowHour from dual; //获取时间的时
select to_char(sysdate,'mi') as nowMinute from dual; //获取时间的分
select to_char(sysdate,'ss') as nowSecond from dual; //获取时间的秒
2、字符串和时间互转
select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual
select to_char( to_date(222,'J'),'Jsp') from dual //显示Two Hundred Twenty-Two
扩展资料
date 转换为字符串:
to_char(日期,”转换格式” ) 即把给定的日期按照“转换格式”转换。
转换的格式:
表示year的:y 表示年的最后一位 yy 表示年的最后2位 yyy 表示年的最后3位 yyyy 用4位数表示年。
表示month的:mm 用2位数字表示月;mon 用简写形式 比如11月或者nov ;month 用全称 比如11月或者november。
表示day的:dd 表示当月第几天;ddd表示当年第几天;dy 当周第几天 简写 比如星期五或者fri;day当周第几天全写。比如星期五或者friday。
表示hour的:hh 2位数表示小时 12进制; hh24 2位数表示小时 24小时。
表示minute的:mi 2位数表示分钟。
表示second的:ss 2位数表示秒60进制。
select ID
from (select ID,
time,
coun,
lag(coun, 1) over(partition by ID order by time) lag_coun1,
lag(coun, 2) over(partition by ID order by time) lag_coun2,
lag(coun, 3) over(partition by ID order by time) lag_coun3,
lag(coun, 4) over(partition by ID order by time) lag_coun4,
lag(coun, 5) over(partition by ID order by time) lag_coun5,
lag(coun, 6) over(partition by ID order by time) lag_coun6
from (select ID, trunc(add_time, day) time, count(*) coun
from table
where time 10
and time 24
group by ID, trunc(add_time)))
where coun 30
and lag_coun1 30
and lag_coun2 30
and lag_coun3 30
and lag_coun4 30
and lag_coun5 30
and lag_coun6 30
带有单引号或者符号的字符串,需要转义。
'单引号用连续的两的单引号取代。
符号用两个连续的符号取代
输出
wo
shi
'lanzhoudaxue'
de
xuesheng,可以这样写
begin
dbms_output.put_line('wo
shi
''lanzhoudaxue''
de
xuesheng');
end;
这里有一个前提,就是每个地方只有一次到件,一次发件,如果出现两次以上的到件或者发件,那么根据我写的sql只能取到最大值,也就是说只会有一条记录,这件要注意。如果存在两条以上,那么就要根据业务去判断了,或者在下面那条(2)语句加group的条件,或者用其他的函数(不用max)等等。要根据实际需求写sql,切忌生搬硬套。
(1)不知道你是什么版本的oracle,如果是11Gr2以上的,那么可以用pivot(具体的使用方法自己去找找吧,网上有很多,我只写你例子里的语句)
select * from table
pivot (max(时间) for 收发件 in ('发件' as 发件时间,'到件'as 到件时间));
(2)其他的方式 case when也可以,稍微麻烦一点。decode和case when类似。
select 省份,max(case when 收发件='到件' then 时间 end) 到件时间,max(case when 收发件='发件' then 时间 end) 发件时间 from table group by 省份
您可以使用cast函数将数字字符串转化为整型。
cast函数格式如下:
CAST(字段名 as int);
拓展资料
结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。
参考资料:百度百科_SQL
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流