1)复制table1到table2,要求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'