不常用sql语句

oracle
1获取一个表的所有字段名及数据类型

select
A.TABLE_NAME,
A.COLUMN_NAME,
A.DATA_TYPE
from
ALL_TAB_COLUMNS A
WHERE
A.TABLE_NAME='TS_TESTA'


2

表A
ID NAME DATE
1 b 2008-3-27 10:55
1 a 2008-3-27 10:55
1 d 2008-3-27 10:55
2 z 2008-3-27 10:55
2 t 2008-3-27 10:55

要获得如下结果,注意字符串需要按照D列的时间排序:
ID NAME
1 d,b,a
2 z,t

select a.ID,wmsys.wm_concat(name) as "Name"
from (select id,name,date_t from A2 order by id,date_t desc) a
group by a.ID
(使用WMSYS.WM_CONCAT函数实现行列转换)



补充:
1 重复值相关
1.1 求出表中某列有相同值的记录SELECT colName,count(colName) FROM table GROUP BY colName HAVING count(colName) >1
1.2 求出序号有断号的记录
1.3 删除重复记录DELETE FROM table t1 where id not IN( SELECT min(id) from table t2 where t2.colName = t1.colName group by col1,col2…)
1.4 随机读取若干记录SELECT TOP N * FROM table order by newid() (N代表任意正整数)
2 日期相关
2.1 求某日期所在月份的最大天数
2.2 求某月的天数 SELECT decode(value1 , “1”,”31”,”2”,”28”...)
2.3 求某月的休息日
2.4 提前若干时间进行提醒SELECT * FROM 日程安排 where datediff('minute',开始时间, getdate())>30
2.5 一个月的第一天 SELECT DATEADD(mm, DATEDIFF(mm, 0,getdate()), 0)
2.6 本周的星期一 SELECT DATEADD(wk, DATEDIFF(wk, 0, getdate()), 0)
2.7 一年的第一天 SELECT DATEADD(yy, DATEDIFF(yy, 0, getdate()), 0)
2.8 季度的第一天 SELECT DATEADD(qq, DATEDIFF(qq, 0, getdate()), 0)
2.9 上个月的最后一天 SELECT DATEADD( ms, -3, DATEADD( mm, DATEDIFF(mm, 0, getdate()), 0))
2.10 去年的最后一天 SELECT DATEADD( ms, -3, DATEADD( yy, DATEDIFF(yy, 0, getdate()), 0))
2.11 本月的最后一天SELECT DATEADD( ms, -3, DATEADD( mm, DATEDIFF(m, 0, getdate())+1, 0))
2.12 本月的第一个星期一SELECT DATEADD( wk, DATEDIFF(wk, 0, dateadd(dd, 6-datepart(day, getdate()), getdate())), 0)
2.13 本年的最后一天 SELECT DATEADD( ms, -3, DATEADD( yy, DATEDIFF(yy, 0, getdate())+1, 0))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值