根据存储过程包含某个关键字,查找相关所有存储过程信息及根据多个主键删除重复列

--STUFF用法, ReportDetail 表存储的PersonelID为A,B,C,D  查询出来将对应A B C D 转换成人的姓名姓名1,姓名2,姓名3,姓名4
STUFF((SELECT ','+Personnel.PersonnelName FROM Personnel  WHERE a.PersonnelId LIKE '%'+Personnel.PersonnelId+'%'
 FOR XML PATH('')),1,1,'') PersonName,


--删除重复列

  delete from tbAccount
where   NaturalCode in (select NaturalCode    from tbAccount group by  NaturalCode     having count(NaturalCode) > 1)
 and  AutoID  not in (select min(AutoID) from tbAccount
group by NaturalCode     having count(NaturalCode)>1)

--根据多个主键删除重复列

delete  t
FROM
(SELECT *,ROW_NUMBER() OVER(partition BY Period
                           ,LegalEntity
                           ,ino_id
                           ,BUZEI ORDER BY Period) AS Row FROM tbl_Journal with(nolock)
                           where period>'201405'
) AS t
WHERE Row>1



--根据关键字查询相关存储过程

select o.name,c.text from sys.objects o
inner join syscomments c on o.object_id=c.id
where o.type='P' AND c.text like '%Approved%'



--行转列  Priovt 

if object_id('tempTb')is not null drop table tempTb

go

create table tempTb (姓名 varchar(10),课程 varchar(10),分数 int)

insert into tempTb values('张三','语文',74)

insert into tempTb values('张三','数学',83)

insert into tempTb values('张三','物理',93)

insert into tempTb values('李四','语文',74)

insert into tempTb values('李四','数学',84)

insert into tempTb values('李四','物理',94)

go



declare @sql varchar(8000)

set @sql=''  --初始化变量@sql

select @sql=@sql+','+课程 from tempTb group by 课程--变量多值赋值

--STUFF 函数将字符串插入到另一个字符串中。 它从第一个字符串的开始位置删除指定长度的字符;然后将第二个字符串插入到第一个字符串的开始位置。
--stuff(字符串,从1个字符,删除一个字符,插入一个新的字符串)
set @sql=stuff(@sql,1,1,'')--去掉首个','

set @sql='select * from tempTb pivot (max(分数) for 课程 in ('+@sql+')) a'

exec(@sql)


select 姓名,

 sum(case 课程 when'语文'then 分数 else 0 end)语文,

 sum(case 课程 when'数学'then 分数 else 0 end)数学,

 sum(case 课程 when '物理'then 分数 else 0 end)物理

from tempTb

group by 姓名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值