`
rainShare
  • 浏览: 99795 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

不常用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))
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics