自己常用SQL语句收集
多对多判断 select a.* from Temp2 a (nolock) where not exists(select * from Temp1 where 年月=a.年月 and 水表代码=a.水表代码 and 水价分类=a.水价分类) order by 小计 SELECT * FROM TB WHERE CHECKSUM(*) NOT IN (SELECT CHECKSUM(*)FROM TA) 判断数据是否是小数 select * from dnsfk where cast(substring(cast(水量 as varchar),charindex('.',cast(水量 as varchar))+1,len(cast(水量 as varchar))) as int) <> 0 异地备份 backup database 数据库 to disk='\\你的计算机名\共享目录名\备份文件名' 查看数据库中字段是否有重复 select 代码 from 表名 group by 代码 having count(代码)>1 判断表在不在,在就删除 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[temp]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[temp] 1、二个表的更新 select count(*) as cnt1 from 表1 where 户号 in (select 户号 from 表2) delete from 表1 where 户号 in (select 户号 from 表2) insert into 表1 select * from 表2 select count(*) as cnt2 from 表2 更新了 cnt1 条记录 添加了 cnt2-cnt1 条数据 2、日志的删除 backup log water with no_log DBCC SHRINKDATABASE (water,TRUNCATEONLY ) 3、多对多置换 update c200303 set c200303.编号=jbk.编号 from jbk where (c200303.委托号<>0) and (jbk.代码=c200303.代码) 4、导文本 EXEC master..xp_cmdshell 'bcp "SELECT 户号,户名,convert(char(10),抄表日期,120),水量 FROM water.dbo.c200303" queryout c:\DT.txt -c -S"sony" -U"sa" -P"sa"' bcp 可以实现数据的导入导出。 EXEC master..xp_cmdshell 'bcp test.dbo.P_Aspect in c:\temp1.txt -c -q -S"servername" -U"sa" -P""' //导入 EXEC master..xp_cmdshell 'bcp test.dbo.P_Aspect out c:\temp1.txt -c -q -S"servername" -U"sa" -P""' //导出 6、汇总语句 select max(帐本号) as 帐本号,sum(case when 用水类别='生活' then 水量 end) as 生活,sum(case when 用水类别='生产' then 水量 end) as 生产,sum(case when 用水类别='商业' then 水量 end) as 商业,sum(case when 用水类别='生产' then 水量 end) as 生产,sum(case when 用水类别='生活加压' then 水量 end) as 生活加压, sum(case when 用水类别='环卫生活' then 水量 end) as 环卫生活,sum(case when 用水类别='环卫生产' then 水量 end) as 环卫生产,sum(case when 用水类别='华电' then 水量 end) as 华电,sum(case when 用水类别='自用水' then 水量 end) as 自用水,sum(case when 用水类别='商业加压' then 水量 end) as 商业加压,sum(case when 用水类别<>' ' then 水量 end) as 总计 from c200306 group by 帐本号 order by 帐本号 复制语句 EXEC master..xp_cmdshell 'copy c:\dt.txt d:\dt.txt' 可将空格去掉生成文本 EXEC master..xp_cmdshell 'bcp "SELECT cast(户号 as char(9))+cast(户名 as char(40))+convert(char(10),抄表日期,112)+cast(水量 as char(10)) FROM water.dbo.c200303" queryout c:\DT.txt -c -S"sony" -U"sa" -P"sa"' select isnull(托收标志,'') as 托收标志,dwdazl.单位编码,dwsbzl.编号,dwdazl.单位名称,dwdazl.联系人,dwdazl.联系电话,dwdazl.单位地址,dwsbzl.代码,dwsbzl.户号,dwsbzl.口径,dwsbzl.用水类别,dwsbzl.水表位置 from dwdazl,dwsbzl where dwdazl.单位编码=dwsbzl.单位编码 and dwsbzl.单位编码 in (select 单位编码 from dwsbzl where 托收标志='Y' and 户号 like '%A%') order by dwdazl.单位编码,托收标志 desc 7、测出每个字符位置 declare @a varchar(8000),@i int set @a='wof|中华人民共和国|good|order|一条大河|' set @i=charindex('|',@a) while @i>0 begin print @i select @a=substring(@a,@i+1,8000) ,@i=charindex('|',@a) end