常用SQL语句总结

1.查找同一张表中多个字段都重复的数据

(1)查找重复数据

  select t0.* from(select 注册号,公司名 from t1 group by 注册号,公司名 hacing count(公司名) > 1) t

  left join t1 t0

  on t0.注册号 = t.[注册号] and t0.公司名 = t.[公司名] where t.公司名 is not null order by t.[公司名]
(2)删除同一张表中的重复数据(这张表有自增id,删掉id数字小的那条)
  delete from vi.dbo.t1
  where 公司名 in (select 公司名 from vi.dbo.t1 group by 公司名 having count(公司名) > 1)
  and id not in (select min(id) from vi.dbo.t1 group by 公司名 having count(公司名)>1);
 (3)删除同一张表中的重复数据(这张表有自增id,删掉id大的那条)
delete p1 from Person p1 ,Person p2
where p1.Email =p2.Email and p1.Id > p2.Id

2.对于已经存在的表,添加一列新的数据

要求保留两位小数点,长度为18个字节

sql: alter table IC.dbo.t2 add icp同比率2019 numeric(18,2)

 

3.计算多个标签下的数据量(有时候某个标签的数据量是0,如果不做处理,不会显示)

select * into IC.dbo.t2
from (select distinct b.一级来源类型,isnull(a.总量,0)数量
from eccrc.dbo. t1 b
      left join (SELECT 一级来源类型,COUNT(distinct pg_cust_id)总量
       FROM eccrc.dbo.t1_all
                 WHERE 客户状态='0'
                 AND 工商类型='标准企业工商'
                 AND 创建年月>='2019-01-01'
                 AND 创建年月<='2019-01-31'
                 GROUP BY 一级来源类型)a
       on b.一级来源类型=a.一级来源类型
     where b.一级来源类型 in ('活动管理平台','市场BD','销售录入','信誉','资源中心','总部CSC下发')
  )c
 
4.跨服务器操作数据库中的数据
select * into  目的数据库名.dbo.表名 from openrowset
('SQLOLEDB','服务器地址';'登录名';'密码',源数据库名.dbo.表名)
 
5.将表' t1 '重命名为 ' t2 '
exec sp_rename 't1','t2'
 
6.增加一列自增长列,列名为 id
alter table vidb.dbo.t1 add  id  int identity(1,1) not null;
 
7.存储过程中的 ‘if’ 语句的使用,以及正则表达式的用法
ALTER PROCEDURE [dbo].[web_icponline](@city nvarchar(max))
AS
if object_id('bo')is not null drop table bo

if @city='广州'
begin
select t1.* into t2 from dyx_区域,bo where charindex(dyx_区域.区域,bo.公司名)>0 and dyx_区域.city='广州'
drop table t1
exec sp_rename 't2','t1'
update t1 set 公司类型='普通企业'
update t1 set 联系人=replace(replace(REPLACE(联系人,'先生',''),'女士',''),' ','')
update t1 set 联系电话=replace(replace(联系电话,'*','-'),'分机','')
update t1 set 联系电话='020-'+replace(replace(replace(联系电话,'-',''),'/',''),' ','') where len(replace(replace(replace(联系电话,'-',''),'/',''),' ',''))=8
select t1.*,dbo.GetRegexMatchGroups(联系电话,'(13\d|14[579]|15[^4,\D]|16[6]|17[0135678]|18\d|19[89])\d{8}|17\d{9}',0,50)[手机],
dbo.GetRegexMatchGroups(联系电话,'([\((]?0?20[\))/\s]?[-\s]?[2-9]\d{7}(-\d{1,4})?)',0,50)[座机]
into t3 from t1
update t3 set 座机=dbo.regexReplace(座机,'^(([\((]?20[\))]?[-/\s]?)|([\((]?020[\))]?[-/\s]?))','020-',1,0)
update t3 set 省份='4'
end
 

posted on 2019-03-07 15:19  砌墙的石头  阅读(201)  评论(0编辑  收藏  举报

导航