自己常用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, NIsUserTable) = 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

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。