常用sql代码

1)复制table1table2,要求table,2表存在

Insert into Table2(a, c, d) select a,c,5 from Table1

2)把test1表的所有数据复制到test2表(要求test2表不存在)

select *  into test2  from test1

3)把查询到的满足条件多行的某列的值组合在一起,并用逗号隔开

SELECT  STUFF(( SELECT  ',' +questiondesc FROM SAF_ApprovDt  where DocCode like 'QRI190900001' FOR XML PATH('')), 1, 1, '')

4)日期截取

SUBSTRING(CONVERT(CHAR(23), a.DocDate, 121),0,8)

5)按group by分组,并把满足某种条件的列的值进行求和

sum(case  when b.positionname = '部门'  then isnull(money,0) else 0  end)   。。。 group by 。。。

6)强制转换格式

cast(isnull(money,0) as varchar(50))

7)日期相减 后面的日期减前面的日期

DATEDIFF(DAY,getdate(),enddate)

8)日期加2天

DATEADD(day,2,OrderDate)

9)查询某数字列从1开始缺少的最小值

select case when min(id)>1 then 1 else  (select min(id+1) from  scltproject where (id+1) not in (select id from scltproject)) end as minnoExist from scltproject
10)日期操作函数:

select datepart(参数,datetime)
示例: select datepart(week,getdate())  判断今天为本年第几周
参数部分如下:
year——将返回日期的年份
quarter——将返回日期在年内的第几季
month——将返回日期的月份
dayofyear——将返回日期在年内的第几天
day——将返回日期在该月的第几天
week——将返回日期在年内的第几周
weekday——将返回日期在周内的第几日
Hour——将返回日期的小时部分
minute——将返回日期的分钟部分
second——将返回日期的秒钟部分
用函数datepart处理就可以了,示例:
select datepart(weekday,getdate()) as 周内的第几日
select datepart(week,getdate()) as 年内的第几周
select datepart(quarter,getdate()) as 年内的第几季

11)查询包含某个特定字符串的存储过程

select name from sysobjects o, syscomments s where o.id = s.id
and text like '%生成工资单%' and o.xtype = 'P'